在Sanic中,提供了一个response对象,用于构造响应数据

 

在response中,BaseHTTPResponse作为基类用于构建响应对象

由源码可见,对于json 的序列化,会优先尝试导入ujson.dumps,导入失败时会导入json.dumps

Sanic七:Sanic响应对象_json

然后用HTTPResponse继承BaseHTTPResponse,并且提供了一系列的函数,用于返回对应的响应

Sanic七:Sanic响应对象_json_02

 

response提供的用于响应的函数

 

1、empty,响应空内容,默认状态码为204,status,headers,body均可自定义

Sanic七:Sanic响应对象_json_03

Sanic七:Sanic响应对象_字段_04

Sanic七:Sanic响应对象_字段_05

 

2、json,默认status为200,有源码可见,可自定义dumps,当没有指定时,默认取BaseHTTPResponse._dumps

Sanic七:Sanic响应对象_自定义_06

用默认dumpus

Sanic七:Sanic响应对象_自定义_07

Sanic七:Sanic响应对象_json_08

由于我没装ujson库,所以默认调的其实是自带的json库,即此时可以传对应参数

Sanic七:Sanic响应对象_字段_09

Sanic七:Sanic响应对象_html_10

也可以自定义序列化对象,并且传对应参数

Sanic七:Sanic响应对象_json_11

Sanic七:Sanic响应对象_html_12

 

3、text,响应字符串,当指定的body不是字符串时,报错

Sanic七:Sanic响应对象_自定义_13

Sanic七:Sanic响应对象_字段_14

Sanic七:Sanic响应对象_json_15

指定的响应体为非字符串则报错

Sanic七:Sanic响应对象_字符串_16

 

4、row,自定义类型

Sanic七:Sanic响应对象_json_17

 

5、html,响应html

Sanic七:Sanic响应对象_字符串_18

Sanic七:Sanic响应对象_字符串_19

Sanic七:Sanic响应对象_html_20

 

6、file,响应文件内容,filename字段指定文件路径即可

Sanic七:Sanic响应对象_json_21

Sanic七:Sanic响应对象_字段_22

 

7、file_stream,响应文件流,filename字段指定文件路径即可

Sanic七:Sanic响应对象_json_23

Sanic七:Sanic响应对象_自定义_24

 

8、stream,响应数据流

Sanic七:Sanic响应对象_json_25

 

9、redirect,响应重定向,并且状态码为302

Sanic七:Sanic响应对象_字符串_26

Sanic七:Sanic响应对象_字符串_27

Sanic七:Sanic响应对象_自定义_28

 

以上就是Sanic.response提供的可响应对象,当然也可以基于BaseHTTPResponse构建自定义的响应,但是官方提供的其实也够用了

 

讨论群:249728408