-
REST API 디자인하기Project/트윗 클론코딩 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에 어떤 데이터를 전송할건지 구상하는게 훨씬 편하다고 했다. 맞는 말이다.
다음에 다른 프로젝트에서 설계할 때 순서 잘 지키자.
반응형'Project > 트윗 클론코딩' 카테고리의 다른 글
Authentication 구축하기 (0) 2023.09.30 서버에서 Validation & Sanitization 수행하기 (0) 2023.09.24 서버 아키텍쳐 구축하기 (0) 2023.09.23 REST API 서버 구축하기 (0) 2023.09.22 프로젝트 개요 (0) 2023.09.19