需求场景

在api设计中,基于restful的设计原则,一个http的响应应该包含执行的响应信息以及状态码。

例如:一个错误信息的响应信息应该包含内容以及返回对应的设计错误码。

在flask中如何制定这个的响应信息呢?下面来看看。

使用return直接设置特定的响应信息

return 响应体, 状态码, 响应头
等价于
return (响应体, 状态码, 响应头)

return 可以返回一个元组,这样的元组必须是 (response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。

下面写个示例视图函数如下:

from flask import Flask, request, abort# 实例化app
app = Flask(import_name=__name__)@app.route('/login', methods=["GET","POST"])
def login():# return 响应体, 状态码, 响应头return "login fail", 404, [("token", "123456"), ("City", "shenzhen")] # 使用元组的方式设置headerif __name__ == '__main__':app.run(debug=True)

使用浏览器请求如下:

return "login fail", 404, [("token", "123456"), ("City", "shenzhen")]

可以看到上面设置响应消息成功返回。

  • status 值可以设置任意的状态代码,headers可以是字典
from flask import Flask, request, abort# 实例化app
app = Flask(import_name=__name__)@app.route('/login', methods=["GET","POST"])
def login():# return 响应体, 状态码, 响应头# return "login fail", 404, [("token", "123456"), ("City", "shenzhen")] # 使用元组的方式设置headerreturn "login fail", "666 hello wolrd", {"token":"123456", "City": "shenzhen"} # 使用元组的方式设置headerif __name__ == '__main__':app.run(debug=True)

使用浏览器请求如下:

  • 响应消息元组 (response, status, headers) 至少包含一个元素
from flask import Flask, request, abort# 实例化app
app = Flask(import_name=__name__)@app.route('/login', methods=["GET","POST"])
def login():# return 响应体, 状态码, 响应头# return "login fail", 404, [("token", "123456"), ("City", "shenzhen")] # 使用元组的方式设置header# return "login fail", "666 hello wolrd", {"token":"123456", "City": "shenzhen"} # 使用元组的方式设置headerreturn "login fail", "999 hello wolrd"if __name__ == '__main__':app.run(debug=True)

使用浏览器请求如下:

可以看到只要至少有一项作为响应消息即可。

除了return的方式返回特性的响应消息,还可以使用另一种方式。

使用make_response设置特定的响应信息

导入make_response

from flask import make_response

示例代码如下:

from flask import Flask, request, abort, make_response# 实例化app
app = Flask(import_name=__name__)@app.route('/login', methods=["GET","POST"])
def login():res = make_response("login fail") # 设置响应体res.status = '999 login fail' # 设置状态码res.headers['token'] = "123456" # 设置响应头res.headers['City'] = "shenzhen" # 设置响应头return resif __name__ == '__main__':app.run(debug=True)

在浏览器执行如下:

python flask 设置 header 响应体、响应头、状态码相关推荐

  1. Python flask设置favicon.ico图标

    Python flask设置favicon.ico图标,如图: import os from flask import Flask from flask import send_from_direct ...

  2. python flask 设置个性化的响应体 响应头 状态码

    目录 需求场景 使用return直接设置特定的响应信息 使用make_response设置特定的响应信息 需求场景 在api设计中,基于restful的设计原则,一个http的响应应该包含执行的响应信 ...

  3. HTTP 响应的格式及状态码

    HTTP响应 服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应. 响应数据格式 HTTP响应由三部分组成:状态行.响应头 ...

  4. 用python+flask自己制作api(教程附源码)

    1.背景 ok,可能很多朋友跟我一样经常使用各种api,比如facebook的,github的,甚至是微信的api.所以很多人也想制作自己的api.网上关于这方面的教程实在是很少,今天我就顺手做了一个 ...

  5. http请求头状态码

    1.返回"HTTP Status 415"状态码[表示不支持的媒体类型(Media Type),也就是MIME类型] 如果请求头是Content-type=application/ ...

  6. Python Flask Web 第二课 —— 请求-响应循环

    1. 请求与请求上下文 Flask 从客户端收到请求(请求对象,比如请求某 URL)时,路由给视图函数处理,视图函数需要访问这些请求对象(它封装了客户端发送的 HTTP 请求),这样才能处理请求. 要 ...

  7. win10+python+Flask设置SSL证书,使用https服务

    本人也是看了很多博客,才学会的. Flask使用SSL搭建HTTPS服务 直接使用ssl: from flask import *app = Flask(__name__)@app.route('/' ...

  8. 【APP接口开发】常用HTTP响应头状态码详解

    1.200 OK,客户端请求城成功 2.400 Bad Request ,客服端请求语法错误,服务器无法理解和处理 3.401 unauthorized,请求未通过认证 4.403 permissio ...

  9. PDA服务器显示响应为空,jmeter 状态码为200,但是响应数据为何为空

    @Wei_s: 意思就是说服务器就只写了200,没写body. 比如你想要的是A(http response包): HTTP/1.1 200 OK Cache-Control: private Con ...

最新文章

  1. 改变程序员的一本书 | 每日趣闻
  2. 怎么查看ftp服务器的版本信息,查看ftp服务器版本
  3. jenkins pipeline发送邮件报错解决办法: failed to connect, no password specified?
  4. 多个maven project项目之间进行引用
  5. 普林斯顿公开课 算法2-2:选择排序
  6. Java程序中fix time_Java Position.setFixTime方法代码示例
  7. node.js + express 初体验【hello world】
  8. 一些简单的前端练习demo
  9. mvn使用assembly打包所有的moudle为一个tgz文件
  10. 吴恩达深度学习之四《卷积神经网络》学习笔记
  11. [Alpha阶段]第二次Scrum Meeting
  12. 如何记忆 Spring Bean 的生命周期
  13. 机器学习可以应用在哪些场景
  14. Linux基本指令(1)
  15. c语言做游戏音效,游戏背后辛苦付出的劳动者—游戏音效师
  16. 从隔壁老王开始的信号处理入门
  17. UDS汽车诊断入门01 - 简介
  18. 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...
  19. 技术大佬:还在用Excel,傻了吧!网友:每天朝九晚六飞起来!
  20. 【ML】EM(期望最大)算法

热门文章

  1. android 8.0 intent,Android 8.0通知栏适配问题
  2. 中tile函数_HelpGirlFriend 系列 --- tensorflow 中的张量运算思想
  3. 利用gcc的-finstrument-functions获取函数轨迹跟踪
  4. Fusion360操作记录
  5. 获取节点及元素的代码
  6. extern “C”的作用详解
  7. Kotlin学习与实践 (十)Kotlin的可空性
  8. oss https 代理
  9. Adobe将于2020年末停止对Flash的支持
  10. [转]CSS3 transform顺序问题