GitHub:https://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。对于其他的扩展也有很高的兼容性。
pip3 install flask-restful
Flask-RESTful 提供了一个 Resource 基础类,它能够定义一个给定 URL 的一个或者多个 HTTP 方法
from flask import Flask
from flask.ext.restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class UserAPI(Resource):
def get(self, id):
pass
def put(self, id):
pass
def delete(self, id):
pass
api.add_resource(UserAPI, '/users/<int:id>', endpoint = 'user')
Flask 提供的 @app.route 装饰器来可以自定义路由,它是 Flask 中常用的方式。以下是使用 @app.route 装饰器实现自定义路由的示例:
from flask import Flask
app = Flask(__name__)
# 路由类
@app.route('/myclassroute')
class MyRouter:
def __init__(self):
pass
@app.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写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中的几个属性:
关键点: jsonify 返回的Response的headers属性为:Content-Type: application/json ,是标准的json格式。区别于josn.dumps(data)返回的Response的headers属性为:Content-Type: text/html; charset=utf-8,这就是要封装出jsonify方法的主要目的。
jsonify还有一个特性是:jsonify自动去除了JSON格式中逗号冒号间的空格,起到了压缩数据的作用。(实际上就是用了 json.dumps(data, separators=(‘,’, ‘:’)) 处理。)
Flask Jsonify的使用非常简单,我们只需要在Python代码中导入该扩展库,并且在需要返回Json结果的函数中使用该方法即可。下面是一个使用Flask Jsonify的示例代码:
from flask import Flask, jsonify
app = 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函数支持多种参数类型
jsonify函数使用的是Python内置的json模块进行序列化操作,因此需要确保序列化的对象是支持JSON序列化的类型.
JSONIFY_PRETTYPRINT_REGULAR 是一个 Flask 应用程序配置选项,用于指定在返回 JSON 响应时是否进行美化打印。默认情况下,它的值为 True,表示启用美化打印。
你可以在 Flask 应用程序的配置中添加 ‘JSONIFY_PRETTYPRINT_REGULAR’ 键,并设置其对应的值。以下是一个示例:
app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False # 禁用 JSON 响应的美化打印
确保在创建 Flask 应用程序对象之后、在使用 app.run() 启动应用程序之前,设置正确的配置值。
‘JSONIFY_MIMETYPE’ 是 Flask 应用程序的配置选项之一,用于指定 JSON 响应的 MIME 类型。
你可以在 Flask 应用程序的配置中添加 ‘JSONIFY_MIMETYPE’ 键,并设置其对应的值。以下是一个示例:
app.config['JSONIFY_MIMETYPE'] = 'application/json'
确保在创建 Flask 应用程序对象之前、在使用 app.run() 启动应用程序之前,设置正确的配置值。
关于flask的jsonify序列化dict后的结果会自动根据key的下标升序排列,希望dict原样返回的方法【重写jsonify方法】
参考URL: https://dandelioncloud.cn/article/details/1443061478801911810/