일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- ubuntu
- git workflow
- 스키마 설계
- ubuntu 패스워드
- 리눅스 사용권한
- mapstruct
- git 설정
- REST HTTP API
- ubuntu passwd
- set-version
- Spring MVC
- Spring 예외처리
- O(log n)
- char to int
- 자료구조
- http 응답코드
- Java
- file i/o
- AOP
- 스키마 디자인
- JAVA 재귀함수
- 배열 탐색
- 탐욕 알고리즘
- RestControllerAdvice
- N:N
- 함수형 인터페이스
- Spring
- root passwd
- 코드스테이츠
- custom exception
Archives
- Today
- Total
개발소설
REST API 본문
REST(Representational State Transfer) API
- 로이 필딩의 박사 학위 논문에서 처음 소개
- 웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의 하는 방식
- 표준화된 HTTP API를 만드는(디자인하는)것이라고 생각하면 된다.
좋은 REST API를 디자인하는 방법
- 레오나르드 리차드슨은 REST APIU를 잘 적용하기 위한 4단계 모델을 만들었다.
- 0단계부터 3단계
- 로이필딩은 모든 단계를 충족해야 REST API라고 했지만, 3단계 까지도 지키기 어렵기 때문에 2단계 까지만 적용해도 좋은 API 디자인 이라고 볼수있다. 이 경우에 HTTP API라고도 부른다.
0단계 | HTTP 사용 |
1단계 | 개별 리소스와의 통신 준수 |
2단계 | HTTP 메소드 원칙 준수 |
3단계 | HATEOAS 원칙 준수 |
REST 성숙도 모델 - 0단계
- 단순히 HTTP 프로토콜을 사용하기만 해도 된다.
- 좋은 REST API를 작성하기 위한 기본 단계
REST 성숙도 모델 - 1단계
- 웹에서 사용되는 데이터와 리소스를 HTTP URI로 표현
- 개별 리소스에 맞는 엔드포인트를 사용해야 한다.
// E35 좌석을 예매한다.
// 요청
POST /seat/E35 HTTP/1.1
[헤더]
{
"name" : "me"
"date" : "2023-05-05"
}
// 응답
HTTP/1.1 200 OK
[헤더]
{
"seat" : [
{"id": "E35", "name" : "me", "date" : "2023-05-05", ...}
"status": 예약되었습니다.
]
}
- /seat/E35 라는 엔드포인트를 통해 E35 좌석에 개별적으로 접근하여 예약을 했다.
- 엔드포인트 작성시 동사, HTTP메서드 등을 지양하고, 리소스에 집중하여 명사 형태에 단어로 작성하는것이 좋다.
- 응답시에 리소스 사용에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환 해야한다.
REST 성숙도 모델 - 2단계
- CURD에 맞게 적절한 HTTP 메서드를 사용하는것에 중점을 둔다.
- 리소스 조회(READ)시 GET, 리소스 추가(CREATE)시 POST, 리소스 삭제(DELETE)시 DELETE, 리소스 변경(UPDATE)시 PUT
- 응답코드도 CREATE시 200이 아닌 201 Created, 관련 리소스를 응답메시지 헤더에 Location을 추가하여 작성된 URI를 확인할수 있도록 해야 한다.
- 메서드 사용 규칙
- GET은 서버의 데이터를 변화 시키지 않아야 한다.
- POST는 요청마다 새로운 리소스를 생성, PUT은 요청마다 같은 리소스를 반환(멱등성) 하기때문에 구분
- PUT과 PATCH도 구분, PUT은 교체, PATCH는 수정
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods 메서드 정리
- 여기까지만 적용해도 모범적인 HTTP API라고 할 수 있다.
REST 성숙도 모델 - 3단계
- HATEOAS(Hypertext As The Engine Of Application State), 하이퍼미디어 컨트롤을 적용
- 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성해야 한다.
- 링크요소는 응답을 받은 다음에 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고 있다.
- 예를 들면 좌석을 조회시 조회된 좌석을 예약할수있는 링크를 삽입하는것
- 응답내에 새로운링크를 넣어 새로운 기능에 접근 할수 있도록 하는것
'CS > HTTP' 카테고리의 다른 글
Postman (0) | 2023.03.28 |
---|---|
OpenAPI (0) | 2023.03.28 |
HTTP 상태코드 (status code) (0) | 2023.03.28 |
HTTP API (0) | 2023.03.27 |
HTTP Messages (0) | 2023.03.27 |
Comments