API 상태코드
성공
200 OK
요청의 정상적 수행
- POST, GET, DELET, PUT 전부 수행
201 Created
요청이 받아들여져 리소스가 생성 됨
202 Accepted
요청이 받아들여졌음
- 비동기 요청에 대한 응답
callBack이나 polling을 통해 리소스를 나중에 제공
에러
400 Bad Request
잘못된 요청
401 Unauthorize
인증되지 않은 상태에서 리소스를 요청
- 로그인이 되지 않은 상태에서 로그인 버튼 클릭
HATEOAS를 통해 회원가입으로 보내기
403 Forbidden
권한이 없는 상태에서 보호된 리소스를 요청(보안)
404 Not Found
요청한 리소스를 찾을 수 없음
405 Method Not Allowed
불가능한 동작을 요청
409 Conflict
요청에 대한 충돌 작성, 사실 상 예외처리
- 기존 4xx에러로 처리 불가능한 예외들을 처리
만약 질문에 답변이 달린 상태라면 답변으로 인해 질문을 삭제처리 할 수 없음
500 Internal Server Error
- 5xx 에러의 경우 CDN, WebServer, Proxy의 에러가 아닌 이상 절대 발생하면 안된다.
발생 했다는 건 서버가 처리하지 못한 예외가 있다는 것
API 문서화
- swagger를 이용
- spring boot 플러그인을 제공 해주니 별도의 어려운 점이 없음
- 지금 상태코드를 defult롤 해놨는데 원래 API Response로 빼서
각 상태코드를 전부 정의해두고 매핑 된 API 별 사용해야 함
사용법
RequestHandlerSelectors.any()
- 전체 패키지를 탐색하여 controller를 찾음
RequestHandlerSelectors.basePackage("com.app.api")
PathSelectors.any()
PathSelectors.ant("/apis/*")
참고
swagger2 적용
swagger2 적용
Spring MVC + Swagger2
setting swagger2 rest api
swagger ui docs