简介:
Flask-RESTful 是一个 Flask 扩展插件,它添加了快速构建 REST APIs 的支持。是能够跟你现有的ORM/库协同工作的轻量级的扩展。
Restful API规范:
restful api是用于在前端与后台进行通信的一套规范,是个风格,不是标准;使用这个规范可以让前后端开发变的更加轻松。
协议
采用http
或者 https
协议
数据传输格式
数据之间传输的格式为json
,而不使用xml
。
url
不能有动词 只能有名词 对于一些名字 如果出现复数 那么在后面添加 s
比如 想要获取文章列表 那么应该 使用 /articles/ 而不能使用 /get_article /
HTTP请求方法
-
GET
: 从服务器上获取资源。 -
POST
: 在服务器上新创建一个资源。 -
PUT
: 在服务器上更新资源。(客户端提供所有改变后的数据) -
PATCH
: 在服务器上更新资源。(客户端只提供需要改变的属性) -
DELETE
:在服务器上删除资源。
示例
-
GET /users/ : 获取所有的用户
-
POST /user/ :新建一个用户
-
GET /user/id/ :根据id获取一个用户
-
PUT /user/id/:更新某个的id用户的信息 (需要提供用户的所有信息)
-
PATCH /user/id/:更新某个id用户的信息 (只提供需要改变的信息)
-
DELETE /user/id/ : 删除某个id用户的信息
状态码
状态码 | 原生描述 | 描述 |
---|---|---|
200 | OK | 服务器成功响应客户端的请求。 |
400 | INVALID REQUEST | 用户发出的请求有错误,服务器没有进行新建或修改数据的操作 |
401 | Unauthorized | 用户没有权限访问这个请求 |
403 | Forbidden | 因为某些原因禁止访问这个请求 |
404 | NOT FOUND | 用户发送的请求的url不存在 |
406 | NOT Acceptable | 用户请求不被服务器接收(比如服务器期望客户端发送某个字段,但是没有发送)。 |
500 | Internal server error | 服务器内部错误,比如出现了bug |
一个最小的 Flask-RESTful API 像这样:
1 from flask import Flask
2 from flask.ext import restful
3
4 app = Flask(__name__)
5 api = restful.Api(app)
6
7 class HelloWorld(restful.Resource):
8 def get(self):
9 return {'hello': 'world'}
10
11 api.add_resource(HelloWorld, '/')
12
13 if __name__ == '__main__':
14 app.run(debug=True)
参数解析:
1 from flask_restful import reqparse
2
3 class UserResource(Resource):
4 parser = reqparse.RequestParser()
5 parser.add_argument("tokrn", help="请输入token")
6 parser.add_argument("username", required=True)
7
8 args = parser.parse_args()
9 username = args.username
add_argument可以指定这个字段的名字,这个字段的数据类型等
- fault:默认值,如果这个参数没有值,那么将使用这个参数指定的值。
- required:是否必须。默认为False,如果设置为True,那么这个参数就必须提交上来。
- type:这个参数的数据类型,如果指定,那么将使用指定的数据类型来强制转换提交上来的值。
- choices:选项。提交上来的值只有满足这个选项中的值才符合验证通过,否则验证不通过。
- help:错误信息。如果验证失败后,将会使用这个参数指定的值作为错误信息。
- trim:是否要去掉前后的空格。
- location:指定参数的位置。
如果你要接受一个键有多个值的话,你可以传入 action='append':
1 parser.add_argument('name', type=str, action='append')
以不同的名称存储你的参数一旦它被解析的时候,你可以使用 dest kwarg。
1 parser.add_argument('name', type=str, dest='public_name')
2 args = parser.parse_args()
3 args['public_name']
通过传入一个列表到 location 中可以指定 多个 参数位置:
1 parser.add_argument('text', location=['headers', 'values'])
2
3 # 列表中最后一个优先出现在结果集
来源:oschina
链接:https://my.oschina.net/u/4304822/blog/3328359