restful api接口封装
程序员文章站
2022-04-10 09:52:38
1. 背景知识restful 是一种互联网软件架构(以网络为基础的应用软件的架构设计),其特点:一个URL对应一种资源表现层:客户端和服务器之间,把"资源"具体呈现出来的形式,如文本可以采用txt,json等格式客户端基本操作:GET 获取资源、POST 新建/更新资源、PUT 更新资源、DELETE 删除资源2. 使用说明route():装饰器,URL对应触发的函数,该段代码运行后,打开http://127.0.0.1:5000即可查看对应的资源from flask import Fla...
1. 背景知识
restful 是一种互联网软件架构(以网络为基础的应用软件的架构设计),其特点:
- 一个URL对应一种资源
- 表现层:客户端和服务器之间,把"资源"具体呈现出来的形式,如文本可以采用txt,json等格式
- 客户端基本操作:GET 获取资源、POST 新建/更新资源、PUT 更新资源、DELETE 删除资源
flask官网:http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application
2. 使用说明
route():装饰器,URL对应触发的函数,该段代码运行后,打开http://127.0.0.1:5000即可查看对应的资源
- 外部访问:配置 app.run(host=“0.0.0.0”, port=5000)
from flask import Flask, jsonify, abort
app = Flask(__name__)
results = [
{
'input_text': 'xxx',
'data': [
{
'word': 'xxx',
'title': ['3690090392616837245', '3814509192824492032']
}
]
}
]
@app.route('/query/<string:input_text>', methods=['GET'])
def get_tasks(input_text):
result = list(filter(lambda t: t['input_text'] == input_text, results))
if len(result) == 0:
abort(404)
return jsonify({'results': result})
if __name__ == '__main__':
app.run()
在python中采用requests获取网页上资源
import requests
ans = requests.get('http://127.0.0.1:5000/query/xxx')
print(ans.text)
3. 接受请求数据,并返回结果
采用 flask_restful 包的 api 的 get 方法接收请求,并将计算结果返回
客户端在python中采用requests获取网页上资源,并传递请求参数,该段代码中的请求参数为:input_text,值为:枪支
flask接收参数的方式如下,使用中发现采用 post 提交参数,form获取参数的 post 方法速度比 get 方法快些。
-
request.form.get("key", type=str, default=None)
获取表单数据 -
request.args.get("key")
获取 get 请求参数 -
request.values.get("key")
获取所有参数 -
request.get_json("key")
获取解析 json 数据格式
import requests
ans = requests.get('http://127.0.0.1:5000/query/?input_text=枪支')
print(ans.text.encode('utf-8').decode('unicode_escape'))
flask_restful 接收到该参数,并经过一系列的计算后将结果返回
from flask import Flask, request
from flask_restful import Api, Resource
from search_recommend import process_search_recommend
app = Flask(__name__)
api = Api(app)
class ReceiveText(Resource):
def get(self):
input_text = request.args.get('input_text')
results = process_search_recommend(input_text)
return results, 200
api.add_resource(ReceiveText, '/query/')
if __name__ == '__main__':
app.run()
本文地址:https://blog.csdn.net/shlhhy/article/details/107382942
上一篇: Linux系统编程之启动流程分析