Operation/Rest API 4

REST API 성숙도 모델 (Maturity Model) [Richardson Maturity Model]

REST API 성숙도 모델 Rechardoson의 REST API 성숙도 모델이라는 것을 정리한다. 성숙도 모델은 총 4단계로 나누어져서 각 단계의 조건에 만족할 수록 REST API에 가까워진다고 한다. Level 0 Level 0은 웹 매커니즘을 사용하지 않고 HTTP를 원격 호출을 위한 전송 시스템으로 사용하는 경우이다. RPC(Remote Procedure Call)처럼 리소스 구분 없이 설계된 HTTP API이다. 하나의 End-point를 사용해서 HTTP Method도 반드시 POST가 된다. 그래서 서로 다른 매개변수를 통해서만 여러 동작을 하게 된다. Request POST /api/user { "function": "getUser", "arguments" [ "1" ] } Respon..

Operation/Rest API 2022.04.28

REST API - Bulk delete 설계하는 방법!

Bulk delete REST API에서 리소스의 id array를 사용해서 Bulk delete를 해야할 때 어떻게 하면 좋을까요? 저의 경우 DELETE /resources 로 요청을 보내고, Body에 { ids: [] } 형식의 데이터를 넣어주면 안되는지 생각했었습니다. Data의 위치 그런데, DELETE에서 Body에 데이터를 담는 것이 바람직한 방법이 아니라고 합니다. 왜냐하면, 일반적으로 HTTP 메소드를 사용할 때 데이터 위치는 아래와 같습니다. GET, DELETE => header에 데이터 포함 POST, PUT => body에 데이터 포함 그래서, 클라이언트나 라이브러리, 미들웨어 등에서 이를 지원하지 않는 경우도 있기 때문에 나중에 문제를 일으키기 쉽습니다. 방법 1 첫 번째 방법..

Operation/Rest API 2022.03.30

Markdown으로 Rest API 문서화하기 !

📝 markdown-api-docs API 문서, API Reference, API docs를 작성하실 때 깃허브(Git hub)나 깃랩(Git lab)에 markdown으로 작성한 템플릿을 공유하고자 합니다. Source : https://github.com/violetbeach/markdown-api-docs 📚 API 설계 API Reference 자원 /resources 자원 등록 새로운 자원을 등록합니다. URL /resources Method: POST Data Paramsname=[String] - 자원명 count=[Integer] - 수량description=[String] - 자원 설명 Optional: Required: Responseid=[String] - 자원 일련번호 name=[..

Operation/Rest API 2021.12.25

REST - 상태 등 세부 컬럼 수정 엔드포인트 (End-point) 설계

예시 어떤 엔터티에 대한 한 가지 컬럼에 대해서만 수정할 때 엔드포인트 설계를 어떻게 하면 좋을까요? 가령 어떤 품목(product)에 대한 예약(reservation)이 있다고 가정합니다. 예약(reservation)에는 승인 대기, 승인 완료, 반납 완료 - 총 3가지 상태가 있다고 가정합니다. 이런 세부 상태 등 하나의 컬럼을 변경하는 API를 설계하는 방법들에 대해서 알아보겠습니다. uri 비교 떠오르는 방법은 아래 5가지가 있습니다. PUT /bookings/{id} PATCH /bookings/{id} PUT /bookings/{id}/status PATCH /bookings/{id}/status POST /bookings/{id}/approve + POST /bookings/{id}/retu..

Operation/Rest API 2021.11.28