티스토리 뷰

Web programing/Flask

Flask 시작하기(1)

내일도이렇게 2019. 5. 1. 14:18

파이썬 웹 프레임워크인 flask 를 사용하여 미니 트위터를 구축 할려고 합니다. 

 

깔끔한 파이썬 탄탄한 백엔드 책보고 정리했습니다. 

 

미니 트위터 핵심 기능은 

  •   회원가입
  •   트윗 
  •   다른 회원 팔로우 하기 
  •   다른 회원 언팔로우 하기 
  •   타임라인( 해당 사용자 그리고 사용자가 팔로우하는 사용자들의 트윗들)

플라스크 설치 

  pip install flask 

 

회원가입 

id,name,email,password,profile 정보를 받습니다. 

 

from flask import Flask, jsonify, request ## 1

app = Flask(__name__)      ## 2
app.users = { }            ## 3
app.id_count = 1           ## 4

@app.route("/sign-up",methods=['POST']) ##5 
def sign_up():
    new_user = request.json  ## 6 
    new_user["id"] = app.id_count
    app.users[app.id_count] = new_user
    app.id_count = app.id_count + 1  

    return  jsonify(new_user)   ## 7

 

 

1. 필요한 Flask의 모듈들을 임포트한다. request 를 통해 사용자가 HTTP 요청을 통해 전송한 JSON 데이터를 읽어 들일 수 있다.
jsonify 는 dictionary 객체를 json 으로 변환하여 HTTP 응답으로 보낼 수 있게 된다. 

 

2. 임포트한 Flask 클래스를 객체화 시켜서 app에 저장

3. 새로 가입한 사용자를 저장할 dictionary 를 users 란 변수에 정의하고 키는 사용자 아이디, 값은 사용자 정보 

4. 회원가입하는 사용자의 id 값을 저장하는 변수 

 

5.  route 데코레이터를 사용해서 "/sign-up" 엔드포인트로 하고 HTTP 메소드는 POST로 한다. 

6.  HTTP 요청을 통해 전송된 회원 정보를 읽어 들인다. request.json은 해당 HTTP 요청을 통해 전송된 JSON 데이터를 파이썬 dictionary로 변환해 준다. 

7. 회원가입한 사용자의 정보를 JSON 형태로 전송한다. 

 

Postman 으로 api 호출 

 

 위에서 만든 회원가입 api 를 실행하여 포스트맨으로 api 호출 해보자 

  

 

300자 제한 트윗 글 올리기 

  • 사용자는 300자를 초과하지 않는 글을 올릴 수 있다 
  • 만일 300자 초과하면 엔드포인트는 400 Bad Request 응답을 보내야한다.  

사용자id 와 내용을 받습니다.

app.tweets = [] ## 1

@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 :   ## 2
        return '사용자가 존재하지 않습니다',400
    if len(tweet) > 300 :   ## 3
        return '300자를 초과했습니다.',400

    user_id = int(payload['id'])

    app.tweets.append({   ## 4 
        'user_id' : user_id,
        'tweet' : tweet
    })

    return '',200

 

1.  사용자들의 트윗들을 저장할 디렉토리로 key는 사용자 아이디,value 는 사용자들의 트윗을 담고 있는 리스트다.

2.  사용자 id가 존재하지 않으면 400 에러 메시지를 전송한다.

3.  트윗이 300자 초과하면 400 에러 메시지를 전송한다. 

4.  해당 사용자의 아이디와 트윗을 딕셔너리로 생성하여 app.tweets 리스트에 저장한다. 

 

200 응답이 정상이고 주의할 점은 api 를 재시작했으면 기존의 사용자 정보는 지워진다. 

 

'Web programing > Flask' 카테고리의 다른 글

Flask - pytest  (1) 2019.11.23
Flask 시작하기(2)  (0) 2019.05.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함