끝없는 공부 ....
싫어요 ..
: Representational State Transfer의 약자
JSON
, XML
을 통해 주고받는 것이 일반적: REST 기반으로 서비스 API를 구현한 것
POST
, GET
, PUT
, DELETE
)를 통해 해당 자원에 대한 CRUD를 적용하는 것JSON
, XML
등 여러 형태의 응답 으로 나타내어 질 수 있음➡️ HTTP프로토콜을 사용하기만 하면 OK
요청 : POST/appointment HTTP/ 1.1
{...}
응답 : HTTP/1.1 200 OK
but ) 0단계만 사용하는 경우 REST API라고 할 수 없다 ❌
➡️ 개별 리소스와 통신을 준수해야한다.
/appointment
사용
- 리소스에 집중해 명사형태의 단어로 작성
- 동사, HTTP 메소드, 행위에 대한 단어 사용은 지양
POST /doctors /허준 /HTTP/1.1
{
"data" : "2023-03-30"
}
HTTP/1.1 200 OK
"slots" : [
{"id":123, "doctor": "허준" ~}
]
POST /slots/123 HTTP/1.1
{
"patient" : "김코딩"
}
HTTP/1.1 200 OK
{
"appointment" : {
"slot" : { "id" : "123", "doctor" : "허준" ... },
"patient" : "김코딩"
}
}
HTTP/1.1 409 ConFlict
➡️ 409는 Conflict.
: 이 응답은 요청이 현재 서버의 상태와 충돌될 때 나오는 에러코드 ( 4: 내잘못, 5: 니잘못 )
- 1xx : 전송 프로토콜 수준의 정보 교환
- 2xx : 클라어인트 요청이 성공적으로 수행됨
- 3xx : 클라이언트는 요청을 완료하기 위해 추가적인 행동을 취해야 함
- 4xx : 클라이언트의 잘못된 요청
- 5xx : 서버쪽 오류로 인한 상태코드
: 4가지 HTTP Method를 사용해서 CRUD 표현
GET
GET
메서드는 body
를 가지지 않음 ➡️ query parameter 사용POST
(예약 잘 됐어)
➡️ 📌 응답코드 201 Created
로 명확하게 작성Location
헤더에 작성 된 URI를 통해 확인할 수 있어야함 !: HATEOAS 하이퍼 미디어 컨드롤 (Hypertext As The Engine Of Application State)을 적용
2단계와 거의 동일하나, 응답에는 리소스의 URI를 포함한 링크를 넣어 새로운 기능에 접근할 수 있도록 함!
➡️ 이때 응답에 들어가는 리소스 링크요소는 응답을 받은 뒤 할 수 있는 다양한 액션들을 위해 많은 하이퍼미디어 컨트롤을 포함하고 있음
ex. 예약 가능 시간 응답 ➡️ 그 시간대에 예약할 수 있는 링크 삽입
요청 ( 22/8/10일 언제 예약 돼 ? )
응답 ( links ➡️ 예약사이트 제공 )
ex. 특정시간 예약 완료 ➡️ 예약 여부 확인 가능 링크 삽입
dlgork ThrThr ehlspdy!