KeyError в веб-сервисе фляги - PullRequest
1 голос
/ 16 мая 2019

Я создал веб-сервис 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)

Вот как я звоню в веб-службу, используя почтальон

Postman Image

Заголовки

enter image description here

Как мне решить эту проблему?

1 Ответ

1 голос

Почтальон может отправлять дополнительные заголовки с вашим запросом.Просто для тестирования вашего кода используйте curl ..

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

Возможно, почтальон не отправляет правильный запрос.Он добавляет временные заголовки, которые изменяют ваш запрос и мешают его обработке.Ваш код будет работать нормально, как только вы интегрируете его в интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...