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
Response 201{ text, name, username, url, (optinal) }
- { tweet }
- Request
PUT /tweets/:id
- updating tweet
Response 200{ text }
- { tweet }
- Request
DELETE /tweets/:id
- deleting tweet
- Response 204
위 내용은 강의에서 작성한 내용인데 작성자별 트윗을 불러오는 과정에서 username을 사용했다
그리고 이런 RESTful API를 정의하기 전에 트윗에 대한 스키마를 먼저 작성하여
어떤 형식으로 DB에 데이터를 저장할건지 먼저 구상하고
그 뒤에 API에 어떤 데이터를 전송할건지 구상하는게 훨씬 편하다고 했다. 맞는 말이다.
다음에 다른 프로젝트에서 설계할 때 순서 잘 지키자.
반응형