대외활동/UMC 5th

Ch06. API URL, Project Configuration

oxdjww 2023. 11. 19. 18:15
728x90
반응형

Overview

EndPoint와 Request/Reply 데이터를 설계하자.

협업을 편리하게 진행하기 위한 API 명세서를 작성하자.

API란

Appliation Programming Interface(API)

즉, Application을 Programming할 때 사용되는 Interface를 말한다.
소프트웨어 사이에 복잡한 것들을 감추고, 추상화를 통해 손 쉽게 마이그레이션 혹은 응용을 할 수 있게끔 하는 도구의 일종이다.

REST API

웹 어플리케이션에서는, REST API를 자주 사용한다.
REST API란 말 그대로 RESTful한 API를 일컫는다.

REST

Representational State Transfer 의 약자로, 자원을 이름으로 구별하여 자원의 상태(state)를 주고 받는 행위 전반을 말한다.
자원(resource), 자원에 대한 행위(HTTP Method), 그리고 행위에 대한 내용(HTTP Payload)로 나뉘어진다.

API EndpointREST하게 설계해보자.

RESTful API Endpoint

  • 설계 규칙
  1. URI에 동사가 포함되지 않는다.
  2. URI에서 단어의 구분이 필요한 경우 -를 사용한다.
  3. 자원(resource)은 기본적으로 복수형으로 표현한다.
  4. 자원을 표기할 때 필요한 경우 /값을 통해 명시적으로 표기한다.
    ...

API 설계

ERD

0. 요구사항

홈 화면, 마이 페이지 리뷰 작성, 미션 목록 조회(진행중, 진행 완료), 미션 성공 누르기,
회원 가입 하기(소셜 로그인 고려 X)

위의 기능을 구현하는데 필요한 API들을 설계하여

API Endpoint, Request Body, Request Header, query String, Path variable

이 포함된 간단한 명세서를 만들어 보자.

1. 홈 화면 조회

  • Endpoint : GET /home (/ 로 해도 될듯?)

  • Request Header : Authorization: Bearer {access_token}

  • Request Body : null


홈 화면의 Endpoint는 /home으로 지정하였다.
이 부분은 협업 시 임의로 조정할 수 있기에, /으로 지정할 수도 있다.

GET이므로 Request Body의 내용은 없다.

2. 마이 페이지 리뷰 작성

  • Endpoint : POST /my-page/reviews
  • Request Header
    • Authorization: Bearer {access_token}
    • Content-Type: application/json
  • Request Body :
    // Review DTO 포맷에 맞게
    {
      "review_grade": 5,
      "review_content": "마싯어용",
    //  "review_reply": "이거는 나중에 patch로 넣으면 될듯"
        "review_date": 2023-11-09,
        "review_photo": BLOB
    }

Endpoint로는 REST하게 적절한 리소스를 배정해주었다.
또, HTTP MethodPOST를 사용하였기에, 리뷰 작성 양식에 맞는 Body를 전송해준다.


3. 미션 목록 조회(진행중, 진행 완료)

  • Endpoint : GET /missions
  • Request Header : Authorization: Bearer {access_token}
  • Request Body : null

REST하게 Endpoint를 작성해주었고, 마찬가지로 GET을 사용하였기에 Request Body는 없다.


4. 미션 성공 누르기

  • Endpoint : PATCH /missions/{mission_id}/success

  • Request Header

    • Authorization: Bearer {access_token}
    • Content-Type: application/json
  • Request Body

    // 기존 미션 폼에 있는 success만 수정해주면 됨
    {
      "mission_success": true
    }

미션 성공을 누르는 API는 미션 Entity에 status를 바꾸어주면 되는 작업이기에 비교적 간단하다.
기존에 저장소에 저장된 값을 일부 수정하기만 하면 된다.
그렇기에 HTTP MethodPATCH를 사용해주었다.

5. 회원 가입 하기(소셜 로그인 고려X)

  • Endpoint : POST /signup
  • Request Header : null
  • Request Body
    // 회원가입 DTO
    {
      "user_name": "user",
      "user_password": "user@gmail.com",
      "user_email": "pw1234",
        "user_phonenumber": "01012341234",
        "user_photo": BLOB
    }

EndpointPOST를 사용하였고,
임의의 회원가입에 양식에 맞게 API를 작성해주면 된다.


감사합니다.

728x90
반응형