python – 使用FLASK将REST API与Web界面相结合的最佳实践

weixin_38095552 2019-09-12 12:22:30
我目前使用flask,sqlalchemy和jinja2构建一个Web应用程序. 为了获得正确的Web界面,我构建我的视图如下: @app.route('/mydata/', methods=['GET']) @login_required def mydata_list(): # build data here... return render_template('mydata/index.html', data=data)) 现在,如果我需要构建一个REST API,我应该终止 return jsonify(data) 那么,如何处理这个以避免代码重复?将?api = True添加到我的网址,在我的视图中测试它,然后返回适当的答案是一个好习惯吗?
...全文
100 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38105447 2019-09-12
  • 打赏
  • 举报
回复
实际上没有正确或错误的方法,对于Flask来说更是如此,这是一个对开发人员施加如此少的规则的框架. 如果您需要我的意见,我认为对网站和API使用相同的视图函数集会导致难以维护的代码,因为两者之间存在一些显着差异,例如: >身份验证:这通常以非常不同的方式针对Web与API进行.>内容:对于API,您只需返回数据,但对于网页,视图功能可能需要执行更多工作并获取仅用于呈现模板所需的额外数据.>请求方法:API使用比Web应用程序更多的HTTP请求方法.例如,要通过API删除资源,客户端通常会发送DELETE请求.在Web浏览器上运行的Web应用程序需要使用GET和POST请求执行所有操作.此外,POST请求方法在API与Web应用程序中具有不同的用法. 我的建议是,使API和Web应用程序的查看功能非常薄,并将应用程序的业务逻辑放在两组视图函数都可以调用的公共类中.

430

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧