Project/트윗 클론코딩

REST API 디자인하기

CoderHan 2023. 9. 19. 10:19
반응형

트윗에 관한 일련의 정보와

로그인에 대한 API만 있으면 충분할 것 같다.

기능 주소 Method / Req Res Description
모든 트윗 불러오기 /tweets GET 200,
{ tweets : [] }
 
트윗 작성 /tweets POST / 
{tweetid : "text",
userid : "text",
content : "text",
createTime : "date"}
201, Created  
작성자별 tweet 조회 /tweets/:id GET /
{userid : "text"}
200, {tweets : [filterd]} 주소에서 전달받은 params에 있는 id로 작성자를 filtering하여 특정 사용자가 작성한 트윗만 전송한다
내가 쓴 트윗 수정하기 /tweets/:tweetId PATCH / 
{tweetid : "text",
content : "text,
createTime : "date"}
204, No Content  
트윗 삭제하기 /tweets/:tweetId DELETE / 
{tweetid : "text"}
204, No Content  
로그인하기 /auth POST / 
{userid : "text",
password : "text"}
200,
{accessToken:"token",
userid : "text}
 
회원가입하기 /auth POST / 
{userid : "text",
password : "text",
name : "text",
imageURL : "url",
email : "email",
createTime : sysdate}
201, Created


 
아이디 중복확인 /auth/:id POST /
{userid : "text"}
200, OK

400, 중복 시 BadReq
 

우선 이정도로 생각해봤는데

강의에서 어떻게 작성했는지는 밑에 작성할 예정이다 

 

 

------------------------

Tweets

  • Tweet Schema
  • { id: string, // 트윗 아이디 text: string, // 트윗 텍스트 createdAt: Date, // 트윗 생성 날짜 name: string, // 사용자 이름 username: string, // 사용자 닉네임 (아이디) url: string (optional) // 사용자 프로파일 사진 URL }

GET /tweets

  • get all tweets
    {
       [tweet, tweet ....] 
    }
    
  • Response 200

GET /tweets?username=:username

  • get all tweets for user's username
    {
       [tweet, tweet ....] 
    }
    
  • Response 200

GET /tweets/:id

  • get tweet by id
    {
       tweet
    }
    
  • Response 200

POST /tweets

  • creating new tweet
    {
       text,
       name,
       username,
    	 url, (optinal)
    }
    
    Response 201
  • { tweet }
  • Request

PUT /tweets/:id

  • updating tweet
    {
       text
    }
    
    Response 200
  • { tweet }
  • Request

DELETE /tweets/:id

  • deleting tweet
  • Response 204

 

 

위 내용은 강의에서 작성한 내용인데 작성자별 트윗을 불러오는 과정에서 username을 사용했다

그리고 이런 RESTful API를 정의하기 전에 트윗에 대한 스키마를 먼저 작성하여

어떤 형식으로 DB에 데이터를 저장할건지 먼저 구상하고

그 뒤에 API에 어떤 데이터를 전송할건지 구상하는게 훨씬 편하다고 했다. 맞는 말이다.

다음에 다른 프로젝트에서 설계할 때 순서 잘 지키자.

반응형