REST와 REST API 정리
REST란?
- REST (Representational State Transfer)
: HTTP를 기반으로 한 분산 시스템 아키텍처 스타일.
HTTP URI 에 명사형으로 명확하게 리소스를 식별하고
METHOD를 통해 (CRUD) 적용하는 형태
REST의 주요 특징
- 클라이언트-서버 구조
- 무상태성 (Stateless)
- 캐시 처리 가능
- 계층화된 시스템 (Layered System)
REST의 장점
- 확장성
- 서버-클라이언트의 독립성
- HTTP 표준 기반 단순성과 효율성
REST API란?
- RESTful API: REST 아키텍처 스타일을 따르는 웹 API
HTTP 메소드와 RESTful API
메소드설명
GET | 리소스 조회 |
---|---|
POST | 리소스 생성 |
PUT | 리소스 수정(전체) |
PATCH | 리소스 수정(일부) |
DELETE | 리소스 삭제 |
URI와 리소스
- URI는 리소스를 식별해야 함!
- 예시: /users, /products/{productId}
RESTful API 설계 원칙
- 리소스 중심 설계 (명사 사용)
- HTTP 메소드의 의미에 맞게 사용
- 무상태성 유지
- 캐시 가능성 고려
- 계층화된 구조
HTTP 상태 코드와 REST API
자주 사용하는 HTTP 상태 코드
200 OK | 요청 성공 |
---|---|
201 Created | 리소스 생성 성공 |
204 No Content | 요청 성공, 본문 없음 |
400 Bad Request | 잘못된 요청 |
401 Unauthorized | 인증 실패 |
403 Forbidden | 권한 없음 |
404 Not Found | 리소스 없음 |
500 Internal Server Error | 서버 내부 오류 |
상태 코드 활용 예
- POST 성공 → 201 Created
- GET 성공 → 200 OK
- 잘못된 요청 → 400 Bad Request
- 일반적으로 성공은 200번대 오류는 400번대
REST API 응답(Response) 본문
- 응답 본문 필요 상황: 요청 결과 외에 추가 데이터를 반환할 때
- 주로 사용하는 포맷: JSON
- 본문에 포함할 정보:
- 리소스 상세 정보
- 처리 결과 메시지 등
RESTful API 설계 Best Practices
- 명확하고 직관적인 URI 설계
- 가능한 경우 HATEOAS 적용 ( 응답 안에 링크를 포함시켜 다음 행동을 안내하는 방식) -> 권장 사항! 필수사항은 아님
- 적절한 HTTP 상태 코드 사용
- 일관된 버전 관리
- 예: /api/v1/users
REST API 보안
- Authentication(인증): 사용자 확인 (예: JWT, OAuth2)
- Authorization(권한 부여): 리소스 접근 제어
- HTTPS 사용: 통신 데이터 암호화
REST API와 GraphQL 비교
RESTGraphQL
엔드포인트 | 여러 개 | 하나 |
---|---|---|
데이터 요청 | 고정 | 원하는 데이터만 요청 |
장점 | 단순성 | 유연성 |
REST API 테스트 방법
- Postman으로 수동 테스트
- JUnit (Spring Boot)으로 자동 테스트
'study > Web' 카테고리의 다른 글
HTML 기본_spartacoding 6 (pymongo,MongoDB) (0) | 2022.02.11 |
---|---|
HTML 기본_spartacoding 5 (크롤링, DB) (0) | 2022.02.10 |
HTML 기본_spartacoding 4 (jQuery)(img src 변경)(로딩후 실행) (0) | 2022.02.10 |
HTML 기본_spartacoding 3 (jQuery) (0) | 2022.01.25 |
HTML 기본_spartacoding homework (간단한 웹페이지) (0) | 2022.01.22 |