전달 과정에서 필요한 데이터를 디자인 하는 이러한 과정은 큰 틀에서 데이터 모델링의 한 부분으로 볼 수 있다. 우리는 데이터의 여러 개의 표 형식으로 정의할 것이므로 관계형 데이터 모델링이라고 할 수 있다.
표를 전달하려면 문자열로만 표현해야 함
JSON 형태의 포맷을 사용하는 것이 일반적, HTTP의 Content-Type으로도 사용 가능


JSON 자료형이 암묵적으로 정의되어 있음

한 행을 수정하려면 어떻게 호출해야 하는가?


정해진 규칙에 맞게 JSON이나 YAML문서로 작성해 놓으면 API문서가 만들어지도록 하는 서비스 존재
Swagger Editor를 사용하면 YAML을 API 문서로 변환해줌
YAML파일 작성 요령
key: value 의 형태key: 와 value 사이에는 반드시 공백 필요주요 key
openapi: OpenAPI의 명세 버전을 입력합니다. 3.0.0 또는 3.0.1 을 입력합니다.info: API 문서 정보입니다. 하위 계층이 존재하며, 하위 계층에서 사용할 수 있는 키는 다음과 같습니다.description: API 문서 설명입니다.version: API 의 버전을 명시합니다.title: API 문서 제목입니다.components: 데이터 모델과 관련한 내용입니다. 뒤에 설명합니다.paths: URI Path와 관련한 내용입니다. 뒤에 설명합니다.servers: URI 엔드포인트와 관련된 정보를 입력합니다. 목록 형태의 값을 입력합니다.데이터 모델 디자인 (components:)
URI Path 디자인 (paths:)
계층구조, 왼쪽이 상위 오른쪽으로 갈수록 하위
<Resource>에는 Path 그 자체를 입력합니다. / 문자열로 시작합니다.
<Method>에는 HTTP 메소드를 입력합니다. get, post, put, delete 등이 될 수 있습니다.
<StatusCode>에는 응답 코드를 입력합니다. 이 때 '200' 과 같이 따옴표로 묶어서 써줘야 합니다.
<ContentType>에는 MIME 타입을 입력합니다. application/json 이 보통입니다.
<DataModel> 은 앞서 언급한 데이터 모델 포맷을 넣을 수 있습니다.
데이터 모델을 참조로 하는 경우
요청이 GET /article 이며, 이에 대한 응답이 성공적으로 도달한 경우 (200) 다음과 같은 JSON을 받게 된다고 가정해봅시다.
이 경우에 URL Path 디자인을 다음과 같이 할 수 있습니다. 데이터 모델에 Article이 이미 정의되어 있다고 가정한 코드입니다.
특정 블로그 글에 달린 댓글 조회
GET /blogs/{blog_id}/comments
POST /posts/{postId}/comments: 게시글에 새로운 댓글 작성
PUT /posts/{postId}/comments/{commentId}: 게시글의 댓글 수정
DELETE /posts/{postId}/comments/{commentId}: 게시글의 댓글 삭제
기타 (어떤 메소드가 적합한지 고민해보세요!)
PUT /users/{userId}/profile: 특정 사용자의 프로필 수정
DELETE /posts/{postId}: 게시글 삭제
POST /signup: 새로운 사용자 회원가입
POST /login: 사용자 로그인
GET /search?query={query}: 검색어에 해당하는 게시글 목록 조회
블로그 글 좋아요
POST /blogs/{blog_id}/likes
블로그 글 좋아요 취소
DELETE /blogs/{blog_id}/likes
다른 글쓴이 팔로우
POST /users/{user_id}/follow