API 개발하기(미니터 : 타임라인)

2021. 8. 8. 03:02·🔧 Backend
반응형
타임라인 엔드포인트

 

마지막으로 사용자 타임라인 엔드포인트를 구현해보자!

트위터의 타임라인처럼 해당 사용자의 트윗들 그리고 팔로우하는 사용자들의 트윗들을 리턴해주는 엔드포인트다. 

 

타임라인 엔드포인트는 데이터의 수정이 없이 받아오기만 하는 엔드포인트이므로, HTTP 메소드는 GET이 될 것이다. 그리고 타임라인 엔드포인트가 리턴하는 JSON 데이터는 다음과 같은 형태의 데이터를 리턴한다.

 

 

타임라인 엔드포인트 구현

@app.route('/timeline/<int:user_id>', methods=['GET'])

엔드포인트의 주소에서 <int:user_id> 부분을 볼 수 있다. 엔드포인트의 주소에 해당 사용자의 아이디를 지정할 수 있게 해준다. 

 

def timeline(user_id):

타임라인 엔드포인트를 구현하는 함수에 user_id를 인자로 받는 것을 볼 수 있다. 위에서 지정한 엔드포인트 주소를 통해서 받는 값이며, 해당 사용자의 아이디다.

 

follow_list = app.users[user_id].get('follow', set())

먼저 해당 사용자가 팔로우하는 사용자들 리스트를 읽어들인다. 만일 사용자가 다른 사용자를 팔로우 한 적이 없는 경우 follow 필드가 존재하지 않을 수도 있다. 그런 경우 empty set을 리턴한다.

 

follow_list.add(user_id)

팔로우하는 사용자 리스트에 해당 사용자의 아이디도 추가한다. 그러므로 팔로우하는 사용자들의 트잇뿐만 아니라 해당사용자의 트윗도 볼 수 있도록 한다.

 

timeline = [tweet for tweet in app.tweets if tweet['user_id'] in follow_list]

전체 트윗 중에 해당 사용자 그리고 해당 사용자가 팔로우하는 사용자들의 트윗들만 읽어들인다.

 

return jsonify({ 'user_id' : user_id,  'timeline' : timeline})

사용자 아이디와 함께 타임라인을 JSON 형태로 리턴한다.

 

 

 


이제 API를 실행시킨 후 타임라인 엔드포인트를 호출해보자.

 

주의할 점은 계속해서 언급했듯이 사용자들을 생성해야 하며, 각 사용자마다 트윗을 생성하고 또한 사용자 팔로우를 해놓아야 한다는 것이다. 

 

1. 사용자 생성
http -v POST localhost:5000/sign-up name=수지 email=csj8073@naver.com password=1234   

2. 사용자 팔로우
http -v POST localhost:5000/follow id:=1 follow:=2

3. 사용자 트윗 생성
http -v POST localhost:5000/tweet id:=1 tweet="My First tweet"

 

 

 

http -v GET localhost:5000/timeline/1

짜잔 성공적으로 타임라인 엔드포인트가 구현되었다.

 

전체 코드는 "깔끔한 파이썬 탄탄한 백엔드" 책의 깃허브 리포지토리에서 확인할 수 있다.

https://github.com/rampart81/python-backend-book/tree/master/chapter5

 

API 개발 끝!

반응형
저작자표시 (새창열림)

'🔧 Backend' 카테고리의 다른 글

SQL(Structured Query Language)  (0) 2021.08.10
데이터베이스(Database)  (0) 2021.08.10
API 개발하기(미니터 : 팔로우)  (0) 2021.08.08
API 개발하기(미니터 : 트윗)  (0) 2021.08.07
API 개발하기(미니터 : 회원가입)  (0) 2021.08.07
'🔧 Backend' 카테고리의 다른 글
  • SQL(Structured Query Language)
  • 데이터베이스(Database)
  • API 개발하기(미니터 : 팔로우)
  • API 개발하기(미니터 : 트윗)
S J ʕ·͡ᴥ·ʔ
S J ʕ·͡ᴥ·ʔ
  • S J ʕ·͡ᴥ·ʔ
    누워서 코딩하기 - 떡 먹는 것처럼 쉽고 재밌게!
    S J ʕ·͡ᴥ·ʔ
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • 👩‍💻 Programming (25)
        • React (18)
        • JavaScript (5)
        • Swift (1)
        • JAVA (1)
      • 🌐 CS-Study (16)
        • CS 스터디 (13)
        • 컴퓨터 네트워크 (3)
      • 🔧 Backend (20)
      • 🎨 UX & HCI (12)
      • 📊 Data analysis (7)
      • 📚 License study (19)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
S J ʕ·͡ᴥ·ʔ
API 개발하기(미니터 : 타임라인)
상단으로

티스토리툴바