Code States/TIL

[0323] (페어) HTTP - REST API 문서 작성

ki1111m2 2023. 3. 23. 18:10
  1. 블로그에 필요한 데이터 모델을 디자인하세요.
    1. 블로그 글(Article), 댓글(Comment)에 필요한 필드와 각 필드의 자료형이 무엇인지 정하세요. 스프레드시트로 정리되면 간편합니다.
  • 필드
    • Article
      • title / string
      • body / string
      • author / string
    • Comment
      • author / string
      • body / string

article 필드

comment 필드


2. 스프레드시트로 작성한 데이터 모델을 Sheety와 연동하세요.

 

sheety에서 new project 생성 후 스프레드시트 연동

GET 요청 테스트


3. Sheety를 통해 블로그에 필요한 API 명세 및 요청/응답을 확인하세요. 블로그에는 다음과 같은 기능을 필요로 합니다.

  • 조회
    1. 블로그 글 전체 조회
    2. 특정 블로그 글 조회
    3. 모든 댓글 조회
    4. 특정 댓글 조회
  • 생성
    1. 새 블로그 글 생성
    2. 새 댓글 생성
  • 삭제
    1. 특정 블로그 글 삭제
    2. 특정 댓글 삭제
  • 수정
    1. 특정 블로그 글 수정
    2. 특정 댓글 수정


4. API 문서화를 진행하세요.

  • openapi.yaml 
  • openapi: 3.0.0 info: description: '블로그 API 문서입니다.' version: '1.0.0' title: '블로그 API' components: schemas: Article: type: object required: - title - body - author properties: title: type: string example: '3월 15일의 TIL' body: type: string example: '오늘은 REST API를 배웠다!' author: type: string example: 'kimcoding' Comment: type: object required: - author - body properties: author: type: string example: 'kimcoding' body: type: string example: '열심히 공부하셨군요. 잘 보고 갑니다.' paths: /article: get: description: '블로그 글 전체 조회' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Article' post: description: '새 블로그 글 작성' requestBody: content: application/json: schema: $ref: '#/components/schemas/Article' responses: '200': description: '성공 응답' content: application/json: schema: type: object properties: article: $ref: '#/components/schemas/Article' /article/{id}: get: description: '특정 블로그 글 조회' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Article' put: description: '특정 블로그 글 수정' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Article' delete: description: '특정 블로그 글 삭제' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Article' /comment: get: description: '모든 댓글 조회' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Comment' post: description: '새 댓글 작성' requestBody: content: application/json: schema: $ref: '#/components/schemas/Article' responses: '200': description: '성공 응답' content: application/json: schema: type: object properties: article: $ref: '#/components/schemas/Comment' /comment/{id}: get: description: '특정 댓글 조회' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Comment' put: description: '특정 블로그 글 수정' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Comment' delete: description: '특정 댓글 삭제' responses: '200': # 당장은 성공 응답만 작성해도 무방합니다. description: '성공 응답' content: application/json: schema: type: object properties: article: type: array items: $ref: '#/components/schemas/Comment' servers: # Added by API Auto Mocking Plugin - description: Sheety url: <https://api.sheety.co/423a89c15480da268aee7fb0a069703c/restApiTest>
  •  

파일 정상 작동 확인


이번 것도 너무 어려웠다..

REST API의 정의도 잘 모르겠고 어떻게 해야하는 건지 감을 못잡겠어서 많이 헤맸다

오전에 팀원 셋이서 도저히 못하겠어서 각자 공부하고 오후에 다시 모이기로 했을 정도 .. ㅋㅋ ..

그래도 감 잡고 난 후에는 진도 쭉쭉 나갈 수 있었다

팀원분들께 생긴 에러도 해결해드리고, 나름 시간 맞춰서 끝낼 수 있었던..!

고생하고 나니까 그래도 꽤 이해가 돼서 뿌듯한 마음도 드는 ,, 그런 ,, 실습 ,,,,,, 

'Code States > TIL' 카테고리의 다른 글

[0323] HTTP - HTTPS  (0) 2023.03.23
[0323] HTTP - REST API 문서 작성  (0) 2023.03.23
[0322] HTTP - 잘 설계된 HTTP API (REST API)  (0) 2023.03.22
[0322] HTTP - HTTP 헤더  (0) 2023.03.22
[0322] HTTP - Cookie  (0) 2023.03.22