백엔드가 이 정도는 해야 한대 - API 상태코드와 문서화

dropKick·2020년 8월 5일
1

API 상태코드

성공

200 OK

요청의 정상적 수행

  • POST, GET, DELET, PUT 전부 수행

201 Created

요청이 받아들여져 리소스가 생성 됨

  • POST 메소드를 통한 요청

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")

  • 지정된 패키지만 API로 만듬

PathSelectors.any()

  • 모든 URL 패턴에 대해 수행

PathSelectors.ant("/apis/*")

  • 특정 경로에 있는 컨트롤러만 포함

참고

swagger2 적용
swagger2 적용
Spring MVC + Swagger2
setting swagger2 rest api
swagger ui docs

0개의 댓글