300자 제한 트윗 글 올리기
이번에는 미니터의 메인 기능인 300자 제한 트윗(Tweet) 글 올리기 엔드포인트를 구현해보자!
[ 트윗 필수 요소 ]
- 사용자는 300자를 초과하는 글 올릴 수 없름
- 300자 초과한다면 엔드포인트는 400 Bad Request 응답을 보내야 함
- 사용자는 300자 이내의 글을 전송하면 엔드포인트는 사용자의 글을 저장하고 있어야 함 그래서 사용자의 타임라인 엔드포인트를 통하여 읽을 수 있도록 해야 함
Tweet 엔드포인트를 호출할 때 전송하는 json 데이터는 다음과 같다.
{
"id" : 1
"tweet" : "My First Tweet"
}
id : 트윗을 보내는 해당 사용자의 아이디
tweet : 트윗 내용
엔드포인트는 다음과 같이 구현할 수 있다.
app.tweets = []
사용자들의 트윗들을 저장할 디렉터리, key는 사용자 아이디이고 value는 사용자들의 트윗을 담고 있는 리스트
@app.route('/tweet', methods=['POST'])
엔드포인트의 주소는 "/tweet"이고 HTTP 메소드는 POST이다.
tweet = payload['tweet']
HTTP 요청으로 전송된 JSON 데이터에서 "tweet" 필드를 읽어 들여 사용자의 tweet 내용이 300자를 넘었는지를 확인한다.
if len(tweet) > 300: return "300자를 초과했습니다", 400
만일 사용자의 트윗이 300자를 넘었으면 "300자를 초과했습니다"라는 메세지와 함께 400 bad request 응답을 보낸다.
user_id = int(payload['id'])
HTTP 요청으로 전송된 JSON 데이터에서 사용자 아이디를 읽어 들인다.
app.tweets.append({'user_id' : user_id, 'tweet' : tweet})
해당 사용자 아이디와 트잇을 dictionary로 생성해서 app.tweets 리스트에 저장시킨다. 곧 구현할 타임라인 엔드포인트에서 app.tweets 리스트를 읽어들이게 된다.
회원가입 엔드포인트와 마찬가지로 "tweet" 엔드포인트를 "app.py"파일에 추가시킨 후 실행시키도록 하자!
그리고 실제 트윗을 보내보자~
마찬가지로 가상환경에서 실행해야 한다. (2개의 창! 필요)
이처럼 사용자가 존재하지 않습니다. 라는 메세지가 뜰 경우 사용자가 생성이 되지 않아서 생기는 문제이다.
회원가입 엔드포인트를 통해 사용자를 생성한 후, 다시 시도해보자!
해결 완료 ~~
아직 데이터베이스 상에서 저장하는 것이 아니기 때문에 데이터는 전부 지워진다!
'🔧 Backend' 카테고리의 다른 글
API 개발하기(미니터 : 타임라인) (0) | 2021.08.08 |
---|---|
API 개발하기(미니터 : 팔로우) (0) | 2021.08.08 |
API 개발하기(미니터 : 회원가입) (0) | 2021.08.07 |
Do it! 모델 만들기 (0) | 2021.08.06 |
플라스크 ORM 라이브러리 사용하기 (0) | 2021.08.06 |