Flask RESTful API开发 返回值和状态码技巧

在使用Flask以及插件Flask-RESTful来开发RESTful API时,返回值和状态码的设计是非常重要的一个部分。对于初学者,在不使用responseerrorhandler()等装饰器时,经常会向发来的请求直接返回需要的数据,比如在没有找到请求的数据时:


return None

这显然是最为简便的一种写法。但是当我们希望统一所有的返回值为JSON格式时,这里需要一些小小的改动(假设希望返回名为student的数据):


return {'student': None}

这样我们就可以返回一个合法的以JSON表示的结果。

但是,这里还有一个小问题,虽然我们的本意是没有找到任何请求的数据,但返回码仍然是默认的200,这显然是不合理的,既容易造成误解也不利于之后的日志分析。因此,简单添加404即可:


return {'student': None}, 404

在此基础上还可以做一个灵活的拓展,假设我们根据发来的请求对数据库进行了检索,并将结果赋给名为student的变量。如果搜索结果即最后的student为空,则状态码为404,否则为200。比较pythonic的写法为:


return {'student': student}, 200 if student is not None else 404

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,277评论 22 257
  • 本文首载于 Gevin的博客 基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,...
    Gevin阅读 11,988评论 6 111
  • 文/ 倾梅一缕魂 一声声蛙叫惊乱了耳中的音符 一丝丝蝉鸣应和着心跳的节拍 一朵朵荷花,风雨过后,依旧坚强,纯洁,美...
    心宇心愿666阅读 256评论 2 1
  • 最近公司换了个产品经理,该公司以产品线为主,无项目经理,无疑便是产品当道,所谓新官上任三把火,推翻之前的迭代了3次...
    flowerflower阅读 1,759评论 1 2
  • 随记 你可以想象得到一个小女孩一直活在家庭的阴影里,分不到阳光,是如何成长吗?与其说成长不如说长大,在父母亲情面前...
    果木1阅读 95评论 0 0