오늘은 내가맡은 역할인 글쓰기 CRUD 에 대해 작성해본다. 완성 코드만 넣었음.
작성한 순서는, 다른 팀원이 작성한 C 제외 R- D- U
# 토큰 없이 성공한 api
@bp.route('/<post_id>', methods=['GET'])
def get_post(post_id):
post = current_app.db.posts.find_one({'_id': ObjectId(post_id)}, {'_id': False})
return jsonify({
'status': STATUS_MESSAGE['SUCCESS'],
'data': post
}), STATUS_CODE['SUCCESS']
# 토큰 있는 코드
@bp.route('/<post_id>', methods=['GET'])
def get_post(post_id):
token = request.cookies.get('token')
payload = decode_token(token, current_app.jwt_secret_key, 'HS256')
if payload == None:
return jsonify({
'status': STATUS_MESSAGE['INVALID_TOKEN']
}), STATUS_CODE['INVALID_TOKEN']
if current_app.db.users.find_one({'id': payload['id']}) == None:
return jsonify({
'status': STATUS_MESSAGE['INVALID_TOKEN']
}), STATUS_CODE['INVALID_TOKEN']
post = current_app.db.posts.find_one({'_id': ObjectId(post_id)}, {'_id': False})
return jsonify(**json.loads(json.htmlsafe_dumps({
'status': STATUS_MESSAGE['SUCCESS'],
'data': post
}))), STATUS_CODE['SUCCESS']
# 토큰 없는 코드
@bp.route('/<post_id>', methods=['DELETE'])
def delete_post(post_id):
current_app.db.posts.delete_one({'_id': ObjectId(post_id)})
return jsonify({
'status': STATUS_MESSAGE['SUCCESS'],
}), STATUS_CODE['SUCCESS']
# 토큰 있는 코드
@bp.route('/<post_id>', methods=['DELETE'])
def delete_post(post_id):
token = request.cookies.get('token')
payload = decode_token(token, current_app.jwt_secret_key, 'HS256')
if payload == None:
return jsonify({
'status': STATUS_MESSAGE['INVALID_TOKEN']
}), STATUS_CODE['INVALID_TOKEN']
if current_app.db.users.find_one({'id': payload['id']}) == None:
return jsonify({
'status': STATUS_MESSAGE['INVALID_TOKEN']
}), STATUS_CODE['INVALID_TOKEN']
post = current_app.db.posts.find_one({'_id': ObjectId(post_id)}, {'_id': False})
if post['user_id'] != payload['id']:
return jsonify({
'status': STATUS_MESSAGE['FORBIDDEN_USER']
}), STATUS_CODE['FORBIDDEN_USER']
current_app.db.posts.delete_one({'_id': ObjectId(post_id)})
return jsonify({
'status': STATUS_MESSAGE['SUCCESS']
}), STATUS_CODE['SUCCESS']
# 완성코드
@bp.route('/<post_id>', methods=['PUT'])
def update_post(post_id):
title = request.form.get('title')
current_group = request.form.getlist('current_group[]')
recruitment_fields = request.form.getlist('recruitment_fields[]')
region = request.form.get('region')
period = request.form.get('period')
contact = request.form.get('contact')
content = request.form.get('content')
current_app.db.posts.update_one({'_id': ObjectId(post_id)},
{'$set': {'title': title,
'current_group': current_group,
'recruitment_fields': recruitment_fields,
'region': region, 'period': period,
'contact': contact,
'content': content}})
return jsonify({
'status': STATUS_MESSAGE['SUCCESS'],
}), STATUS_CODE['SUCCESS']
코드짜다가 우여곡절 겪은 걸 보시려면 아래 링크