Restful
- 就是用来写
接口(url)
的规则。 -
REST
指的是一组架构约束条件和原则。 - 满足这些约束条件和原则的应用程序或设计就是
RESTful
。 -
REST
是一种软件架构风格、设计风格
,而不是标准,只是提供了一组设计原则和约束条件。 - 它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次。
-
restful
接口规范是用于在前端与后台进行通信的一套规范。使用这个规范可以让前后端开发变得更加轻松。
Flask_RESTful
-
Flask-Restful
是一个专门用来写restful api
的一个插件
。 - 使用它可以快速的集成
restful api
接口功能。 - 在系统的纯
api
的后台中,这个插件可以节省很多时间。
Flask_RESTful缺点:
- 如果在普通的网站中,这个插件就没有优势了
- 因为在普通的网站开发中,是需要去渲染
HTML
代码的, - 而
Flask-Restful
在每个请求中都是返回json
格式的数据。
Flask_RESTful安装
pip install flask-restful
适用场景
- 一个系统的数据库数据,展现的平台有PC端、移动端、app端、ios端。
- 前端工程师:都遵循
RESTful
编程规范 - 后端工程师:都遵循
RESTful
编程规范 - 最终结果:开发效率高,便于管理
协议
-
http
或者https
协议。
数据传输格式
- 数据传输的格式应该都用
json
格式。
url链接规则
-
url
链接中,不能有动词,只能有名词。 - 并且对于一些名词,如果出现复数,那么应该在后面加
s
。
HTTP请求方式
主要的两种:
-
GET
:从服务器上获取资源。 -
POST
:在服务器上新增或者修改一个资源。
其他类型:
-
PUT
:在服务器上更新资源。(客户端提供所有改变后的数据) -
PATCH
:在服务器上更新资源。(客户端只提供需要改变的属性) -
DELETE
:从服务器上删除资源。
状态码
状态码 | 原因描述 | 描述 |
200 | OK | 服务器成功响应客户端的请求。 |
400 | INVALID REQUEST | 用户发出的请求有错误,服务器没有进行新建或修改数据的操作 |
401 | Unauthorized | 用户没有权限访问这个请求 |
403 | Forbidden | 因为某些原因禁止访问这个请求 |
404 | NOT FOUND | 用户请求的url不存在 |
406 | NOT Acceptable | 用户请求不被服务器接收(比如服务器期望客户端发送某个字段,但是没有发送)。 |
500 | Internal server error | 服务器内部错误,比如遇到bug |
Flask_RESTful基本使用
- 定义Restful的类视图:
- 从
flask_restful
中导入Api
,来创建一个api
对象。 - 写一个
类视图
,继承自Resource
类,然后在类视图中,使用想要的请求方式来定义相应的方法,比如想要将这个类视图只能采用post
请求,那么就定义一个post
方法。 - 使用
api.add_resource
来添加类视图与url
。
from flask import Flask,url_for,render_template
from flask_restful import Api,Resource
app = Flask(__name__)
# 创建一个api对象
api = Api(app)
#定义一个类视图
class LoginView(Resource):
def post(self):
return {"flag":"yes"} #字典
def get(self):
return {"flag":"no"}
#可支持多个url映射
api.add_resource(LoginView,'/login/','/login2/',endpoint="login")
#应用上下文
with app.test_request_context():
#不写`endpoint`,那么将会使用视图的名字的小写(所有都小写)来作为`endpoint`。
# print(url_for('loginview'))
#如果指定了endpoint,就只能使用endpoint指定的值创建url
print(url_for('login'))
@app.route('/')
def hello_world():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
Flask_RESTful特点
- 如果返回
json
数据,使用flask_restful
- 如果是渲染模版,采用之前的方式,就是
app.route
的方式 -
url
还是跟之前的一样,可以传递参数,也跟之前的不一样,可以指定多个url
。 -
endpoint
是用来给url_for
反转url
的时候指定的。 - 如果不写
endpoint
,那么将会使用视图的名字的小写来作为endpoint
。 - 可以使用
postman接口测试工具
测试post
等请求结果。