我是烧瓶或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 = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\nhttp://127.0.0.10:6485/get_image\r\n-----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)
`
当我使用return json.loads(response)时, 它返回一个错误: TypeError:JSON对象必须是str,bytes或bytearray,而不是' Response'
当我使用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
]
}
答案 0 :(得分:1)
响应对象的类型不是字符串,而是requests.Response
。如果您希望将响应正文作为JSON,则需要使用in the documentation所述的json()
方法。为方便起见和正确的MIME类型,您可以将其与Flask's JSON helper flask.json.jsonify
:
from flask import jsonify
...
@app.route('/post')
def post():
...
return jsonify(response.json())