使用请求将图像 URL 发布到 API,并使用 Flask 视图返回 JSON



我是烧瓶或 Web 应用程序的新手,所以我有一个使用 flask 的虚拟机上运行的 API,它将图像作为输入并在 JSON 文件中返回功能。这是代码:

'

from flask import Flask
from flask import send_file
from flask import Flask, request, send_from_directory, redirect, render_template, url_for, jsonify
import socket
import requests
import json
ip = socket.gethostbyname((socket.getfqdn()))
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'

@app.route('/get_image')
def get_image():
return send_from_directory("C:/images", "22_1.bmp")

@app.route('/goto_api')
def goto_api():
return redirect("http://127.0.0.1/features/", code=302 )
@app.route('/post')
def post():
url = 'http://127.0.0.1/features/'
payload = {'image': 'http://127.0.0.10:6485/get_image'}
#payload = "-----011000010111000001101001rnContent-Disposition: form-data; name="image"rnrnhttp://127.0.0.10:6485/get_imagern-----011000010111000001101001--"
headers = {'content-type': "application/json"}
response = requests.post(url, data=payload, headers=headers)
return json.loads(str(response)) #return json.loads(response)

if __name__ == '__main__':
app.debug = True
app.run(port=6485, host=ip)

'

当我使用返回 json.loads(response( 时, 它返回一个错误: 类型错误:JSON 对象必须是 str、bytes 或字节数组,而不是"响应">

当我使用return json.loads(str(response))时,它会给出以下错误:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我也尝试过许多其他事情。请帮忙:) 以下是该 API 的输出方式

HTTP 201 Created
Allow: GET, POST, OPTIONS
Content-Type: application/json
Vary: Accept
{
"features": [
0.0,
0.0,
4.321675777435303,
1.5690128803253174,
0.0,
4.284165859222412,
0.0,
0.0,
0.0,
0.0,
0.0,
9.667842864990234,
0.0,
0.0,
0.0,
0.0,
0.0,
3.6376543045043945,
3.540004253387451,
0.0,
0.0,
0.0,
0.0,
.
.
.
0.0,
0.0,
2.088599681854248,
5.591969013214111,
3.5350821018218994,
0.0,
0.0,
13.648137092590332,
0.0,
3.5895862579345703,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.9650025963783264,
0.0,
0.9726126194000244,
0.0,
2.707155704498291,
0.40982359647750854,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
5.446600437164307
]

}

响应对象的类型不是字符串,而是requests.Response。如果您希望以 JSON 形式获取响应正文,则需要使用文档中所述的json()方法。为了方便和正确的MIME类型,您可以将其与Flask的JSON帮助程序flask.json.jsonify结合使用:

from flask import jsonify
...
@app.route('/post')
def post():
...
return jsonify(response.json())

最新更新