[Web API] Web API 정리
2019. 3. 9. 21:28ㆍJAVA Back-End
Web API (HTTP API)
앞서 REST API의 조건을 충족하지 못하는 데 REST API라 부르면 안된다고 했습니다. 그리고 Web API 혹은 HTTP API라는 걸 사용하겠다고 했습니다.
Web API 디자인 가이드
1. URI는 정보의 Resource를 표현해야합니다.]
2. Resource에 대한 행위는 HTTP 메소드로 표현합니다.
HTTP 메소드 |
역할 |
POST |
POST를 통해 해당 URI 요청하면 리소스 생성 |
GET |
GET를 통해 리소스를 조회. 조회하고 해당 도큐먼트의 자세한 정보를 가져옵니다 |
PUT |
PUT을 통해 해당 리소스 수정 |
DELETE |
DELETE를 통해 리소스 삭제 |
URI는 resource의 정보를 표현합니다
GET /menbers (o)
: members의 모든 정보를 달라는 request.
명사는 복수로 사용합니다( members 처럼 )
- GET /members/delete/1 (x)
: GET은 정보를 요청할 때 사용하는데 위와 같이 삭제를 표현하면 안됩니다.
URI에 동사를 표현하면 안됩니다 (/delete , /update 이런 식으로 표기하면 X . 반드시 HTTP메서드를 통해서 표현)
- DELETE /members/1 (o)
: DELETE 메소드를 사용해 삭제를 표현. (멤버중 1인 것을 삭제해주세요)
슬래시 구분자(/)는 계층을 나타낼 때 사용합니다
http://domain/houses/apartments ---> 집들중 / 아파트에 대한 request
http://domain/departments/1/employees ---> 해당 도메인의 부서들 중/ 1번 부서의 /사원 에 대한 request
- URI 마지막은 슬래시 포함하지 X
- 하이픈(-)은 가독성을 높일 때 사용
- 언더바(_)는 사용하지 X
- URI 경로는 소문자만 사용
- RFC 3986(URI 문법 형식)은 URI 스키마와 호스트를 제외하고 대소문자 구별
- 파일 확장자는 URI에 포함하지 X
- Accept Header 사용
HTTP 상태 코드
이전에 redirect를 사용할 때면 상태코드가 301로 응답되는 걸 확인했었습니다.
상태 코드를 좀 살펴보겠습니다.
상태코드
2XX대 : 성공을 의미
200 : 클라이언트 요청을 정상적으로 잘 수행했어요!
201 : 클라이언트가 어떤 Resource 요청, 해당 Resource가 성공적으로 생성됨 (즉, POST 방식으로 등록을 성공 했을 때)
3XX대 : 클라이언트가 요청한 리소스에 대한 URI가 변경 되었을 때 사용되는 응답코드
(응답 시 Location header에 변경된 URI를 적어 줘야 합니다 - redirect 사용시 )
4XX대 : 클라이언트의 오류
400 : 클라이언트 요청 (request)가 부적절할 경우
401 : 클라이언트가 인정되지 않고 요청됬을 때
ex) 로그인 하지 않은 상태로 로그인 해야 사용할 수 있는 자원을 요청할 때 (장바구니 같은?)
403 : 유저 인증상태와 관계 없이 응답하고 싶지 않은 리소스를 클라이언트가 요청 했을 때
( 403보다는 400이나 404를 사용할 것을 권고! 403 자체가 리소스가 존재한다는 뜻이므로 )
405 : 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용한 경우의 응답코드
ex) 서블릿의 doGET만 가지고 있었는데 사용자가 POST로 요청을 하는 경우
5XX대 : 서버가 문제 있을 경우 사용되는 응답코드
[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다
'JAVA Back-End' 카테고리의 다른 글
REST API 와 URI 설계 (0) | 2023.02.11 |
---|---|
상태유지(Cookie & Session) (0) | 2019.06.14 |
[REST API] REST API인가? Web API인가? (0) | 2019.03.09 |
[JDBC] MySQL에서 JDBC 사용 (0) | 2019.03.09 |
[JDBC] JDBC (Java Database Connectivity) (1) | 2019.03.06 |