: 트위터의 타임라인처럼 해당 사용자의 트윗들 그리고 팔로우하는 사용자들의 트윗들을 리턴해 주는 엔드포인트이다.
타임라인 엔드포인트가 리턴하는 JSON 데이터는 다음과 같은 형태의 데이터를 리턴한다.
{
"user_id" : 1,
"timeline" : [
{
"user_id" : 2,
"tweet" : "Hello, World!"
},
{
"user_id" : 1,
"tweet" : "My first tweet!",
}
],
}
"user_id" : 1
: 해당 사용자의 아이디
"timeline" : []
: 해당 사용자의 사용자가 팔로우하는 사용자들의 트윗 리스트
"user_id" : 2
: 해당 트윗을 올린 사용자 아이디
"tweet" : "Hello, World!"
: 트윗 내용
이제 타임라인 엔드포인트를 구현한다.
@app.route('/timeline/<int:user_id>', methods=['GET'])
def timeline(user_id):
if user_id not in app.users:
return '유저가 존재 하지 않습니다', 400
follow_list = app.users[user_id].get('follow', 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
})
@app.route('/timeline/<int:user_id>', methods=['GET'])
def timeline(user_id):
follow_list = app.users[user_id].get('follow', 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 })
(1부터 6까지 썼는데 벨로그 오류로 순서가 전부 1로 나오네요..
벨로퍼트 선생님 고쳐주세요..)
이제 API를 실행시킨 후 타임라인 엔드포인트를 호출한다.
타임라인 엔드포인트를 호출하기 전에 사용자들을 생성해야 하고,
각 사용자마다 트윗을 생성하고, 사용자 팔로우를 해놓아야 한다.
아래와 같은 결과가 나오면 성공이다.
/timeline/<int:user_id>
set
을 사용하고 순서나 순차가 중요하다면 list
를 사용하자.dictionary
를 사용한다.깔끔한 파이썬 탄탄한 백엔드 / 저자: 송은우