1.Restful
Restful API 是用于在前端与后台进行通信的一套规范,它可以通过一套统一的接口为所有客户端提供 web 服务,实现前后端分离,节省开发时间。Restful API 由后台也就是 SERVER 来提供前端来调用。前端调用 API 向后台发起 HTTP 请求 ,后台响应请求将处理结果反馈给前端。也就是说 Restful 是典型的基于 HTTP 的协议 。
Restful API 有以下的设计原则和规范:
(1) 资源:首先是弄清楚资源的概念。资源就是网络上的一个实体,一段文本,一张图片或者一首歌曲。资源总是要通过一种载体来反应它的内容。文本可以用TXT,也可以用HTML或者XML、图片可以用JPG格式或者PNG格式,JSON是现在最常用的资源表现形式。
(2)统一接口:Restful 风格的数据元操CRUD(create,read,update,delete)分别对应HTTP方法:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源,这样就统一了数据操作的接口。
(3)URI:可以用一个URI(统一资源定位符)指向资源,即每个URI都对应一个特定的资源。要获取这个资源访问它的URI就可以,因此URI就成了每一个资源的地址或识别符。一般的,每个资源至少有一个URI与之对应,最典型的URI就是URL。
(4)url 链接中,不能有动词,只能有名词。并且对于一些名词,如果出现复数,那么应该在后面加 s。比如:获取文章列表,应该使用 articles,而不应该使用 get_article。
Flask-Restful 插件
使用 Flask-Restful,那么定义视图函数的时候,就要继承自 flask-restful.Resource 类,然后根据当前请求的 method 来定义相应的方法。
使用前先进行安装:pip install flask-restful,并进行绑定;
from flask import Flask
from flask_restful import Api
app = Flask(__name__)
# RestfulApi 绑定 app
api = Api(app)
if __name__ == '__main__':
print(app.url_map)
app.run()
在 goods/views.py 文件下输出字段,在使用 ORM 模型或者自定义的模型的时候,会自动的获取模型中的相应的字段,生成 json 数据,然后再返回给客户端。这里还需要导入 flask_restful.marshal_with 装饰器,并且需要写一个字典,来指示需要返回的字段,以及该字段的数据类型。
from flask_restful import Resource, reqparse, marshal_with, fields
class GoodsView(Resource):
def get(self):
return {'id':1,'name':'Jocelyn'}
return_fields = {
'id': fields.Integer,
'username':fields.FormattedString('pre-{username}'),
'age':fields.Integer(default=20),
'favirate':fields.List(fields.String),
# 复杂结构
'school':fields.Nested({
'address':fields.String
})
}
@marshal_with(return_fields)
def post(self):
# username password email
# 创建 reqparse 对象
parser = reqparse.RequestParser()
# 书写验证规则 add_argument
parser.add_argument('username',required=True)
parser.add_argument('password',required=True)
parser.add_argument('email',required=True,type=str)
# 从数据库中查询到的信息
user = {
'id':1,
'username':'Jocelyn',
'password':'112233',
# 'age':20
'favirate':['篮球','足球','乒乓球'],
'school': {'name': '新华小学', 'address': '深圳龙华'}
}
# 开启验证
try:
args = parser.parse_args()
return user
except:
return {'msg':'数据不合规范'}
要对上述进行验证时,我们可以用到 PostMan 工具。
2.PostMan 工具
若要调试网址发送请求整个过程中的请求信息、响应信息等,则可使用 PostMan 工具。
以上述为例,POST 请求时,在 Headers 中填写要求;若是 GET 请求,则是在 Params 中;