REST API의 모든 스타일을 구현하지 못할 경우에 Web API나 HTTP API라고 한다.
Web API 원칙
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method (GET, POST, PUT, DELETE)로 표현한다.
| Method | 역할 |
| POST | POST를 통해 해당 URI를 요청하면 리소스를 생성한다. |
| GET | GET를 통해 해당 리소스를 조회한다. 리소스를 조회하고 해당 도큐먼트에 대한 자세한 정보를 가져온다. |
| PUT | PUT을 통해 해당 리소스를 수정한다. |
| DELETE | DELETE를 통해 리소스를 삭제한다. |
URI는 정보의 자원을 표현해야 한다.
GET / members
멤버의 모든 정보를 달라는 요청이다.
(명사는 보통 집합을 나타내기 때문에 복수형으로 나타내는 것이 좋다.)
GET / members / delete / 1
GET은 정보를 요청할 때 사용한다. 위와 같이 동사로 삭제를 표현하면 안 된다.
DELETE / members / 1
HTTP Method 중의 하나인 DELETE를 이용하여 삭제를 표현해야 한다.
members 중에 1에 해당하는 정보를 삭제해달라는 의미이다.
조회, 입력, 삭제, 수정과 관련된 것들이 동사로 표현되면 안 된다.
앞의 HTTP Method를 통해서 표현해야 한다.
GET / members / 1 (O)
GET / members / get / 1 (X)
GET / members / add (X)
POST / members (O)
GET / members / update / 1 (X)
PUT / members / 1 (O)
GET / members / del / 1 (X)
DELETE / members / 1 (O)
슬래시 구분자(/)는 계층을 나타낼때 사용한다.
http://domain/houses/apartments
http://domain/departments/1/employees
- URI 마지막 문자로 슬래시 구분자(/)를 포함하지 않는다.
- 하이픈(-)은 URI 가독성을 높일때 사용한다.
- 언더바(_)는 사용하지 않는다.
- URI 경로는 소문자만 사용한다. RFC3986(URI 문법 형식)은 URI 스키마와 호스트를 제외하고는 문자를 구별한다.
- 파일 확장자는 URI에 포함시키지 않는다. Accept Header를 사용한다.
상태 코드 (성공)
| 상태코드 | |
| 200 | 클라이언트의 요청을 정상적으로 수행함 |
| 201 | 클라이언트가 어떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨 (POST를 통한 리소스 생성 작업 시) |
상태 코드 (클라이언트로 인한 오류)
| 상태코드 | |
| 400 | 클라이언트의 요청이 부적절할 경우 사용하는 응답 코드 |
| 401 | 클라이언트가 인증되지 않은 상태에서 보호된 리소스를 요청했을때 사용하는 응답 코드 (로그인하지 않은 유저가 로그인했을 때, 요청 가능한 리소스를 요청했을 때) |
| 403 | 유저 인증 상태와 관계 없이 응답하고 싶지 않은 리소스를 클라이언트가 요청했을때 사용하는 응답 코드 (403보다는 400이나 404를 사용할 것을 권고. 403 자체가 리소스가 존재한다는 뜻이기 때문) |
| 405 | 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 경우에 사용하는 응답 코드 (예를들어 서블릿에 doGet만 가지고 있었는데 사용자가 Post로 요청한 경우) |
상태 코드 (서버로 인한 오류)
| 상태코드 | |
| 301 | 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 떄 사용하는 응답 코드 (응답시 Location header에 변경된 URI를 적어줘야 한다.) |
| 500 | 서버에 문제가 있을 경우 사용하는 응답 코드 |
참고 : boostcourse https://www.boostcourse.org/web316/lecture/16741/?isDesc=false
웹 프로그래밍(풀스택)
부스트코스 무료 강의
www.boostcourse.org
'boostcource > boostcourse_web programming' 카테고리의 다른 글
| Web Api -2 (1) | 2024.04.28 |
|---|---|
| Web API -1 (0) | 2024.04.28 |
| REST API (0) | 2024.04.27 |
| JDBC -4 (0) | 2024.04.27 |
| JDBC -3 (0) | 2024.04.27 |