본문 바로가기
Tech Development/Python Backend (Flask API)

Python Backend - Study Notes 6

by JK from Korea 2022. 9. 1.

날짜: 2022.03.10

 

[타임라인 (Timeline) 관리하기]

타임라인의 경우 이미 사용자가 올린 데이터를 수정 없이 받아오면 되는 것이기 때문에 HTTP GET 메서드를 사용할 것이다. 밑에는 클라이언트가 받을 JSON 데이터 예시이다.

 

 

트윗 엔드포인트에서 사용자가 올린 트윗들을 모두 “app.tweets” list에 dictionary 형태로 저장했었다 (key: 사용자 아이디, value: 트윗 내용). 타임라인 엔드포인트를 구현하기 위해서는 app.tweets 리스트에 접속한 사용자, 사용자의 트윗들, 팔로우 명단의 사람들, 그리고 트윗들을 찾아서 HTTP Request로 클라이언트에 넘겨주면 된다. 엔드포인트 로직을 파이썬으로 구현하면 다음과 같다.

 

 

① 엔드포인트의 고유주소 (URL)에 “<int:user_id>”가 있다. 클라이언트에서 주소를 보낼 때 해당 사용자의 아이디를 지정할 수 있도록 해준다. (위의 사진에 “:”가 누락되어 있다.)

② “timeline(user_id)”에서 “user_id”는 인자 값이다 (parameter). timeline이라는 메서드가 클라이언트가 넘겨준 user_id 를 받아서 사용할 것이라는 의미이다.

⑥ 지정된 user_id의 follower 리스트를 가져오라는 것이다. 만약에 없다면, empty set을 리턴하도록 set()을 지정한 것이다.

⑦ timeline은 본인이 올린 트윗들도 볼 수 있어야하기 때문에 본인 아이디 또한 리스트에 추가한다.

⑧ 모든 트윗들을 모아놓은 app.tweets를 하나하나 확인하면서 만약에 우리가 찾는 id와 일치하면 timeline에 저장한다. “tweet in app.tweets”에서 “tweet”은 앞에서 본 HTTP Request 형식처럼  {‘user_id’:2, ‘tweet’: ‘My First Tweet’} 으로 되어있다.

 

앞에서부터 차례대로 API 엔드포인트를 구현하고 각각의 엔드포인트마다 예시로 HTTP Request를 넘겼다면 밑의 타임라인 요청은 정상적으로 수행될 것이다. 사용자 아이디가 생성되어 있어야 하며 팔로우 관계가 이어져있어야 하기 때문에 앞서 해온 HTTP 통신으로 임시 데이터베이스에 데이터들이 모두 저장되어 있어야한다.

 

 


에러 없이 API가 정상적으로 작동하는 것을 확인할 수 있다. https://github.com/jk-junhokim/python-backend-miniter 에 전체 코드가 나와있다.

728x90
반응형

'Tech Development > Python Backend (Flask API)' 카테고리의 다른 글

Python Backend - Study Notes 8  (0) 2022.09.04
Python Backend - Study Notes 7  (2) 2022.09.03
Python Backend - Study Notes 5  (0) 2022.09.01
Python Backend - Study Notes 4  (0) 2022.06.24
Python Backend - Study Notes 3  (0) 2022.06.16

댓글