滁州网站开发公司电话,室内设计联盟app最新版app,永久免费自助建站,谷歌搜索入口 镜像文章目录 快速上手Flask(二) flask-restful以及全局响应配置什么是flask-restful安装flask_restfulflask_restful 使用flask 使用app.route 装饰器自定义路由 全局响应配置flask的自带的jsonify方法JSONIFY_PRETTYPRINT_REGULARJSONIFY_MIMETYPE重写jsonify方法 快速上手Flask(… 文章目录 快速上手Flask(二) flask-restful以及全局响应配置什么是flask-restful安装flask_restfulflask_restful 使用flask 使用app.route 装饰器自定义路由 全局响应配置flask的自带的jsonify方法JSONIFY_PRETTYPRINT_REGULARJSONIFY_MIMETYPE重写jsonify方法 快速上手Flask(二) flask-restful以及全局响应配置
什么是flask-restful
GitHubhttps://github.com/flask-restful/flask-restful 英文文档https://flask-restful.readthedocs.io/en/latest/ 中文文档http://www.pythondoc.com/Flask-RESTful/
Flask-RESTful 就是 Flask 扩展中的佼佼者它增加了对快速构建 RESTful API 的支持将 Flask 封装了一层使其更容易、更快速、更便捷的开发 RESTful API。
REST API 通过 HTTP 请求进行通信完成以下功能——创建、读取、更新和删除数据。它们也称为 CRUD 操作。REST 提供有关请求资源的信息并使用四种方法来描述如何处理资源 POST — 创建资源 GET — 获取资源 PUT — 更新资源 DELETE — 删除资源。
flask-restful是flask模块的一个扩展能够快速构建restful风格的api。对于其他的扩展也有很高的兼容性。
资源类Flask-RESTful 提供了一个 Resource 基类可以用来创建资源。Resource 类包含了 HTTP 方法GET、POST、PUT、DELETE 等的处理逻辑并提供了一些方便的方法来处理请求和响应。请求参数解析Flask-RESTful 提供了一个 RequestParser 类用于解析请求参数。RequestParser 可以自动将查询参数、表单参数、JSON 参数等解析成 Python 类型并提供了一些选项来指定参数的类型、默认值、必须存在等限制条件。响应格式化Flask-RESTful 提供了一个 marshal_with() 装饰器用于格式化响应数据。marshal_with() 装饰器可以将 Python 对象转换成指定的输出格式如 JSON、XML 等并支持指定输出字段、字段类型、嵌套字段等功能。路由定义 Flask-RESTful 提供了一个 Api 类用于定义路由和资源的映射关系。Api 类包含了 add_resource()方法用于将资源类和 URL 路由绑定起来。异常处理Flask-RESTful 提供了一些异常类用于处理 HTTP 请求和响应中的错误。Flask-RESTful 的异常类包括 abort、HTTPException 等可以方便地处理 HTTP 状态码、错误信息等。
安装flask_restful
pip3 install flask-restfulflask_restful 使用
Flask-RESTful 提供了一个 Resource 基础类它能够定义一个给定 URL 的一个或者多个 HTTP 方法
from flask import Flask
from flask.ext.restful import Api, Resourceapp Flask(__name__)
api Api(app)class UserAPI(Resource):def get(self, id):passdef put(self, id):passdef delete(self, id):passapi.add_resource(UserAPI, /users/int:id, endpoint user)flask 使用app.route 装饰器自定义路由
Flask 提供的 app.route 装饰器来可以自定义路由它是 Flask 中常用的方式。以下是使用 app.route 装饰器实现自定义路由的示例
from flask import Flaskapp Flask(__name__)# 路由类
app.route(/myclassroute)
class MyRouter:def __init__(self):passapp.route(/myroute)def my_route_handler(self):return This is my custom route!if __name__ __main__:app.run()类装饰器 app.route(‘/myclassroute’) 中定义了类级别的路由。这将使整个类中的方法都与 /myclassroute 关联起来。
然后在类中的方法上使用 app.route(‘/myroute’) 装饰器来定义方法级别的路由。这些方法级别的路由将与类级别的路由拼接起来形成完整的路由路径。
在浏览器中访问 http://localhost:5000/myclassroute/myroute 时将看到返回的文本 “This is my custom route!”。
全局响应配置
flask的自带的jsonify方法
使用flask写api是件很方便的事情 flask内部的jsonify方法可以轻松的返回json数据。
Flask是一个轻量级的Python Web框架其设计目的是使得Web开发变得更加容易。Flask支持多种扩展库Flask Jsonify是其中一个非常常用的扩展库。所谓的Jsonify指的是将Python对象转换为Json对象。Flask Jsonify是Flask库中的一个函数用来将Python数据结构转换为Json并返回到客户端。
jsonify返回的类型是 class ‘flask.wrappers.Response’一个JSON的响应response jsonify 返回的Response中的几个属性
headers : 设置请求头信息status : String类型的数据格式为这种“200 ok”status_code : int 类型就是状态码但是不能是自定义的状态码data : 需要返回到前端的数据set_cookie 设置cookie 的值del_cookie 删除cookie 不会立马删除浏览器上报错的cookie 值会讲过期时间设置为当前时间还是cookie 创建的时间这样就表示过期了浏览器会自动删除。
关键点 jsonify 返回的Response的headers属性为Content-Type: application/json 是标准的json格式。区别于josn.dumps(data)返回的Response的headers属性为Content-Type: text/html; charsetutf-8,这就是要封装出jsonify方法的主要目的。 jsonify还有一个特性是jsonify自动去除了JSON格式中逗号冒号间的空格起到了压缩数据的作用。实际上就是用了 json.dumps(data, separators(‘,’, ‘:’)) 处理。
Flask Jsonify的使用非常简单我们只需要在Python代码中导入该扩展库并且在需要返回Json结果的函数中使用该方法即可。下面是一个使用Flask Jsonify的示例代码
from flask import Flask, jsonifyapp Flask(__name__)app.route(/user_info)
def user_info():user {name: 小明,age: 18,gender: 男}return jsonify(user)if __name__ __main__:app.run()我们定义了一个/user_info的路由当用户访问该路由时会返回一个Json格式的用户信息。其中我们使用了Flask Jsonify函数将Python字典对象转换为了Json对象。
Flask Jsonify函数支持多种参数类型
字典类型的参数是使用最为广泛的一种情况我们可以直接将一个Python字典对象传递给Flask Jsonify函数该函数会将该字典对象转换为Json。列表类型的参数 列表类型的参数也可以被Flask Jsonify函数识别并转换为Json。我们可以将一个Python列表对象传递给Flask Jsonify函数该函数会将该列表对象转换为Json。 jsonify函数使用的是Python内置的json模块进行序列化操作,因此需要确保序列化的对象是支持JSON序列化的类型. JSONIFY_PRETTYPRINT_REGULAR
JSONIFY_PRETTYPRINT_REGULAR 是一个 Flask 应用程序配置选项用于指定在返回 JSON 响应时是否进行美化打印。默认情况下它的值为 True表示启用美化打印。
你可以在 Flask 应用程序的配置中添加 ‘JSONIFY_PRETTYPRINT_REGULAR’ 键并设置其对应的值。以下是一个示例
app.config[JSONIFY_PRETTYPRINT_REGULAR] False # 禁用 JSON 响应的美化打印确保在创建 Flask 应用程序对象之后、在使用 app.run() 启动应用程序之前设置正确的配置值。
JSONIFY_MIMETYPE
‘JSONIFY_MIMETYPE’ 是 Flask 应用程序的配置选项之一用于指定 JSON 响应的 MIME 类型。
你可以在 Flask 应用程序的配置中添加 ‘JSONIFY_MIMETYPE’ 键并设置其对应的值。以下是一个示例
app.config[JSONIFY_MIMETYPE] application/json确保在创建 Flask 应用程序对象之前、在使用 app.run() 启动应用程序之前设置正确的配置值。
重写jsonify方法
关于flask的jsonify序列化dict后的结果会自动根据key的下标升序排列,希望dict原样返回的方法【重写jsonify方法】 参考URL https://dandelioncloud.cn/article/details/1443061478801911810/