TIL - flask 2

이동근·2021년 3월 19일
0

flask

목록 보기
2/3

Miniter 기능 구현하기

Mini twitter를 의미 하는 Miniter로서 구현하고자 하는 기능은

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

1. 회원 가입 기능 구현하기

회원가입은 기본적인 회원 정보를 HTTP 요청을 통해 받은 후 시스템 상에 저자하면 된다.

  • 필요한 정보 : id, name, email, passowrd, profile

  • json, jsonify, rquest : request를 통해 사용자가 HTTP요청을 통한 전송한 JSON데이터를 읽어 들일 수 있다.
    jsonify는 dictionary 객체를 JSON으로 변환하여 HTTP응답으로 보낼 수 있게 된다.
    (django의 JsonResponse의 역활을 한다.)

  • app.users = {} : requset로 받은 새로 가입한 사용자를 저장할 dictionary를 user란 변수의 정의한다. key는 사용자 아이디가 될 것이며, 값(value)은 dictionary에 저장 되어 있는 정보이다.

  • app.id_count = 1 : 회원가입하는 사용자의 id값을 저장 하는 변수, id는 1부터 시작하면 새로운 사용자가 회원 가입을 할 때 마다 id값이 하나씩 증가한다.

  • @('/ping', methods=['POST'])
    def sign_up():
    : 'ping' 엔드포인트와 마찬가지로 route 데코레이터를 사요해서 엔드포인트를 정의한다. 엔드 포인트의 고유 주소는 'sign_up'으로 정의 한다.

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

  • new_user[id] = app.id_count : HTTP요청으로 전송된 회원가입 정보에 id값을 더하여 준다.

  • app.users[app.id_count] = new_user : 회원가입하는 사용자의 정보를 app.users = {}에 저장한다.

  • id_count : 즉 id값에 1씩 더해준다.그럼으로써 다음 회원 id값이 이미 회원을 가입한 사용자들과 겹치지 않게 한다.

만일 HTTP 요청이 동시에 여러개가 오게 되면 id값이 잘못 지정될 가능성이 있다. 이러한 문제를 예방하기 위해서 atomic increment operation가 동시에 값을 증가시킬 수 없고 한번에 한 스레드만 값을 증가시키는 것을 사용해야 한다.

HTTPIE 요청 보내기

flask 서버를 연동 시킨후

FLASK_APP=app.py FLASK_DEBUG=1 flask run

FLASK_DEBUG 설정을 해주어야지 수정된 사항이 자동으로 반영이 된다!!!

django때 요청을 보낼때와 비슷하다.

http -v POST http://localhost:5000/sign-up name=이동근 email=eage5424@namver.com password=123456

요청을 보내게 되면!

200 ok! 완료!!

300자 제한 트윗 걸기

이제 단순한 통신이 되는 것은 확인이 완료 되었다.

조건

  • 사용자는 300자를 초과하지 않는 글을 올릴 수 있다.

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

  • app.tweet = [] : 데이터베이스를 연결해 좋은 것이 아니기 때문에 사용자의 트윗을 저장해 놓을 공간이 필요하다. key는 사용자의 아이디이고, value는 사용자들의 트윗을 담고 있는 리스트 이다.

    주의!!
    현재 데이터베이스에 연결을 한 것이 아니라 단순히 메모리상에 저장을 하는 것이기 때문에 다른 작업을 하게 되면 날라가게 되어서 400에러가 나게 된다.

  • user가 있는지 확인 하기, tweet이 300자가 넘은지 확인을 한 후 return을 해준다.

good!

오류가 뜬다면?

요런식으로 나온다!

깔끔한 파이썬 탄탄한 백엔드 - 저자 송은우 ....good 입니다..!

profile
하루하루 1cm 자라는 개발자

0개의 댓글