"""
***封装部分***
"""
from flask import Flask, jsonify, send_file
app = Flask(__name__)
"""
@app.route('/')
这里定义了HTTP请求的方式,如 GET/POST... 默认为GET请求
我们也可以自定义请求方式,如 @app.post('/')
('/')中 / 代表请求的URL路径,此时浏览器中访问路径为 127.0.0.1:5000
('/hello') 此时浏览器中访问路径为 127.0.0.1:5000/hello
"""
# 一般形式
@app.route("/")
def hello():
return "nanjing"
# 带参数形式
@app.route('/text/<CanShu>')
def text(CanShu):
return "hello %s"%CanShu
# def text(CanShu)函数效果
# 127.0.0.1:5000/text/123456网站,显示:hello123456
# JSON文件返回
@app.route('/json')
def return_json():
data = [{'text1':'This is a json TEST1'},{'text2':'This is a json TEST2'}]
return jsonify(data)
# 图片返回接口
@app.route('/image')
def return_image():
image_path = "test123.jpg" #本py文件同一文件下的图片名字
return send_file(image_path, mimetype='image/jpeg')
if __name__ == '__main__':
app.run("0.0.0.0", "5003", debug=True)
"""
app.run() 运行这个实例
默认本机访问,默认5000端口
我们可以进行自定义
如 app.run(host='0.0.0.0', port=5001)
'0.0.0.0'表示允许全部主机访问,port=5001 指定端口为5001
"""
"""
补充:
request.json():从 HTTP 响应对象中解析 JSON 数据
json.dumps(): 将 Python 对象转换为 JSON 字符串。
json.loads(): 将 JSON 字符串转换回 Python 对象。
jsonify(): 将字典对象转换为 JSON 格式的响应
"""
"""
***调用部分***
"""
# 调用接口
import json
import requests
# 首先提供请求路径
URL = "http://127.0.0.1:5003/flask" # 本地地址
WEB_URL = "http://10.1.0.247:5003/flask" # 服务器地址(一般用这个)
HEADER = {'Content-Type': 'application/json; charset=utf-8'}
# 取出json数据
response1 = requests.get(URL)
# .json():HTTP 响应中提取 JSON 数据时候,该方法轻松地将响应体解析为 Python 对象
data = response1.json()
print(data) # [{'text': 'This is a json TEST1'}, {'text2': 'This is a json TEST2'}]
print(type(data)) # <class 'list'>
print(data[1]) # {'text2': 'This is a json TEST2'}
print(type(data[1])) # <class 'dict'>
# json.dumps():Python 对象转换成 JSON 格式的字符串
print(json.dumps(data)) # [{'text': 'This is a json TEST1'}, {'text2': 'This is a json TEST2'}]
print(type(json.dumps(data))) # <class 'str'>
print(json.dumps(data[1])) # {"text2": "This is a json TEST2"}
print(type(json.dumps(data[1]))) # <class 'str'>
# 读取每一条json
if response1.status_code == 200:
for i, item in enumerate(data):
if f'text{i + 1}' in item:
print(item[f'text{i + 1}']) # This is a json TEST1
# This is a json TEST2
'''
输入数据的两种方式
'''
# 1、直接赋值,多值格式,直接在下述字典中添加键值
# 该部分请求数据可以是多种,可以是一条数据 {'text':'测试数据'}
# 可以是一个list,如:{"text": ['测试数据1', '测试数据2', '测试数据3']}
request_Dict = {'text': '测试数据'}
print(type(request_Dict)) # <class 'dict'>
# 2、通过终端进行输入(可自行测试使用)
request_Dict_input = {}
request_Dict_input['text'] = input('请输入文本:')
# 实现数据交互
response2 = requests.post(URL, json.dumps(request_Dict), headers=HEADER)
response3 = requests.post(URL, json.dumps(request_Dict_input), headers=HEADER)
print(type(response2)) # <class 'requests.models.Response'>
print(response2)
# 加载数据,res即为调用接口返回的数据
print(response2.json()) # {'text': '测试数据'}
print(type(response2.json()))
# json.loads():将 JSON 格式的字符串转换为 Python 对象
res = json.loads(response2.text.encode()) # {'text': '测试数据'}
print(res)