Flask接口

 """
***封装部分***
"""

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值