Backend/Flask 개발일지

6. 미니터(Miniter) API 개발 (300자 제한 트윗 글 올리기)

Fullstacknology 2022. 1. 5. 01:23

 

300자 제한 트윗 글 올리기 엔드포인트를 구현하기 위해서는 다음의 요소들을 구현하여야 한다.

 

  • 사용자는 300자를 초과하지 않는 글을 올릴 수 있다.
  • 만일 300자를 초과하면 엔드포인트는 400 Bad Request 응답을 보내야 한다.
  • 사용자가 300자 이내의 글을 전송하면 엔드포인트는 사용자의 글을 저장하고 있어야 한다. 따라서 타임라인 엔드포인트를 통하여 읽을 수 있도록 해야 한다.

 

먼저 Tweet 엔드포인트를 호출할 때 전송하는 JSON 데이터는 다음과 같다.

 

{
    "id"    : 1,
    "tweet  : "My First Tweet"
}

 

엔드포인트를 구현하면 다음과 같다. 

 

app. tweets = []

@app.route("/tweet", methods['POST'])
def tweet():
    payload = request.json
    user_id = int(payload['id'])
    tweet   = payload['tweet']
    
    if user_id not in app.users:
        return '사용자가 존재하지 않습니다.', 400
    
    if len(tweet) > 300:
        return '300자를 초과했습니다.', 400
        
    user_id = int(payload['id'])
    app.tweet.append({'user_id': user_id, 'tweet': tweet})

 

올바르게 작동하는지 확인하기 위해 구현한 엔드포인트를 활성화 후 아래의 명령어로 HTTP 요청을 보내본다.

 

http -v POST localhost:5000/tweet id=1 tweet="Helloeveryone!"

 

책에서는 id:1 tweet:"my first tweet" 이라고 적혀있지만  입력시 오류를 출력하니  =  를 입력한다. 아무래도 버전 차이로 인한게 아닐까 생각해본다.