收藏后端接口实现
接口设计
- URL:/news/news_collect
- 请求方式:POST
- 传入参数:JSON格式
- 参数
参数名 |
类型 |
是否必须 |
参数说明 |
news_id |
int |
是 |
新闻id |
action |
string |
是 |
指定两个值:'collect', 'cancel_collect' |
参数名 |
类型 |
是否必须 |
参数说明 |
errno |
int |
是 |
错误码 |
errmsg |
string |
是 |
错误信息 |
代码实现
@news_blu.route("/news_collect", methods=['POST'])
@user_login_data
def news_collect():
"""新闻收藏"""
user = g.user
json_data = request.json
news_id = json_data.get("news_id")
action = json_data.get("action")
if not user:
return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录")
if not news_id:
return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
if action not in ("collect", "cancel_collect"):
return jsonify(errno=RET.PARAMERR, errmsg="参数错误")
try:
news = News.query.get(news_id)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR, errmsg="查询数据失败")
if not news:
return jsonify(errno=RET.NODATA, errmsg="新闻数据不存在")
if action == "collect":
user.collection_news.append(news)
else:
user.collection_news.remove(news)
try:
db.session.commit()
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(errno=RET.DBERR, errmsg="保存失败")
return jsonify(errno=RET.OK, errmsg="操作成功")