GET /user : user의 정보를 달라는 뜻.
DELETE /user/1 : user id: 1에 해당하는 user을 제거.
ETag, Last-Modified
헤더를 통한 캐싱도 가능하다.URI로 자원을 표현
자원에 대한 행위는 HTTP Method
를 사용한다는 점.
http://api.test.com/users/1/posts
의 경우
users/1
은 많은 유저 중ID:1
인 유저를 의미하며,
posts
는 해당 유저에 속한 게시글을 의미.
posts
와 같이 복수형으로 쓰인 부분은 같은 계열의 여러 자원을 가지고 있는 컬렉션(Collection)
이라 하고, 1과 같이 수로 쓰였거나 단수형으로 나타낸 경우 컬렉션에 포함된 자원 중 하나를 나타내는 도큐먼트(Document)
라고 한다. POST /posts{"title":"Hello,world"}
와 같은 요청으로 유저를 생성했다 하자.Content-Location
을 통해 리소스의 위치를 표현할 수 있다. 리소스 생성으로 발생한 자원의 위치는 항상 다를 것이기 때문. Content-Locate: /posts/1
Content-Type: application/json
429 Too Many Requests
응답과 함께 사용.Retry-After: 3600
GET, POST, PUT, DELETE
이다.PETCH
를 사용하는 경우도 있고, 완성도 높은 API 제공을 위해 추가적으로 OPTION, HEAD
를 제공하기도 한다.PUT
은 전체 자원을 수정하기 위해 사용한다.OPTION
은 자원에 대해 사용가능한 메서드를 반환하고, HEAD
는 BODY를 제외한 HEAD만 반환한다.Post
에 대한 CRUD 작업이 있다고 생각해본다.HTTP 메서드 | URI | 설명 |
---|---|---|
GET | /posts | 모든 포스트 조회 |
GET | /posts/create | 포스트 생성을 위한 Form |
POST | /posts | 포스트 생성 |
GET | /posts/:id | 포스트 조회 |
GET | /posts/:id/edit | 포스트를 수정하기 위한 Form |
PUT/PATCH | /posts/:id | 포스트 수정 |
DELETE | /posts/:id | 포스트 삭제 |
구성요소 | 내용 | 표현방법 | 예 |
---|---|---|---|
자원(Resource) | 자원 | HTTP URI | /memvers/{1}, /member/ |
행위(Verb) | 자원에 대한 행위 | HTTP Method | POST, GET, DELETE, PUT |
표현(Representation) | 자원에 대한 행위의 내용(요청에 대한 body) | HTTP Message Payload (JSON,xml 등) | { member-id:”82370”, member-name:”홍길동“, member-org:”10100”, member-location:”11010” } |
v+숫자
로 표기