【问题标题】:KeyError in flask web service烧瓶 Web 服务中的 KeyError
【发布时间】:2019-10-04 01:49:52
【问题描述】:

我已经创建了 FLASK 网络服务来上传图像,但是当我尝试使用 POSTMAN 调用它时出现错误。

遇到错误

400 Bad Request: KeyError: 'file1'

但我确信我在两个地方都有相同的键名。

我的代码:

from flask import Flask, request
from scipy.stats import wasserstein_distance
import numpy as np
import cv2
from imutils import paths
from werkzeug.utils import secure_filename

app = Flask(__name__)


@app.route("/img", methods=['POST'])
def search():

    file = request.files['file1']
    filename = secure_filename(file.filename)
    file.save(filename)

    images = list(paths.list_images("data"))

    query_image = cv2.imread(filename)
    query_image = cv2.cvtColor(query_image, cv2.COLOR_BGR2GRAY)
    q_hist = get_histogram(query_image)

    hist = []

    for i in images:
        image = cv2.imread(i)

        # convert the images to grayscale
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

        s_hist = get_histogram(image)
        dist = wasserstein_distance(q_hist, s_hist)
        hist.append(dist)

    x = min(hist)
    print(hist)
    if x > 2:
        return "Image Not Found"
    else:
        idx = hist.index(x)
        matched_img = images[idx]
        return des[matched_img]


if __name__ == '__main__':
    app.run(debug=True)

这就是我使用邮递员调用网络服务的方式

标题

我该如何解决这个问题?

【问题讨论】:

  • 尝试添加 if request.method=='POST' 作为函数的第一行
  • 只是为了确认。使用 curl.. curl -X POST -F file1=@"/path/to/my/file/a.jpg" localhost:5000/img
  • @TechatTheSparksFoundation Strange ...在这里得到回应。
  • 是的,邮递员可能没有发送正确的请求。它附加临时标头来修改您的请求并停止处理它。一旦您将代码集成到前端,您的代码就会正常工作。 :)
  • 感谢您的时间和努力 :-)

标签: python flask postman


【解决方案1】:

邮递员可能会随您的请求发送额外的标头。 只是为了测试你的代码使用 curl..

curl -X POST -F file1=@"/path/to/my/file/a.jpg" http://localhost:5000/img

可能邮递员没有发送正确的请求。它附加临时标头,修改您的请求并停止处理它。一旦您将代码集成到前端,您的代码就会正常工作。

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2016-03-30
    • 2021-10-27
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多