2017-02-22 2 views
1

Я построил очень простую колбу api, которая запрашивает нейронную сеть, какой язык был предоставлен через POST.Доступ к фляге REST Api с Curl не работает

Запрос

curl -H "Content-Type: application/json" -X POST -d "{"""text""":"""This should be recognized as an english text."""}""" http://<IP>:5000/api/v1.0/findlanguage 

Api звонки через GET работают в браузере, и они возвращают все нужные объекты JSon. Фланец также отвечает на серверном сервере, что был запрошен GET, который он вернул с кодом HTTP 200.

Но запрос POST выше не вызывает никакого вывода из Flask. Он входит в какую-то консоль, я думаю, потому что я все вижу это:

>_ 

Всё. Что это может быть? Я что-то упускаю?

Ожидаемый результат должен быть объект JSON как:

{ 
    'task': 'findlanguage', 
    'result': 'english', 
    'api': 'v1.0', 
    'call': 'http://<ip>:5000/api/v1.0/findlanguage' 
} 
+0

Может быть, это все двойные кавычки? Попытайтесь изменить тело запроса следующим образом: '' {"text": "Это должно быть признано английским текстом."} '' – leovp

+0

У вас есть какой-либо вывод колбы (который/что входит)? Тип сообщения получил больше шаблонов, которые использовались на стороне сервера? – dsgdfg

+0

Я реализовал его в соответствии с этим уроком https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask, где говорится, что вам нужны эти тройные двойные кавычки в Linux Окружающая среда. Если я попробую его без флагов с двойными кавычками, возвращается HTTP Ошибка 500 Внутренняя ошибка сервера – Andre

ответ

2

Запрос не послана на всех; оболочка ожидает дальнейшего ввода перед запуском curl.

Но запрос POST выше не вызывает никакого вывода из Flask. Она входит в какой-то консоли я думаю, потому что я все вижу это:

>_ 

Вот что вы увидите, если команда имеет несбалансированные кавычки. Например, попробуйте:

curl -H "Content-Type: application/json"" 

Если вы наберете еще " в этой строке и нажмите клавишу return, команда будет выполнена.

Это просто пример. Проблема в примере команды в вопросе связана не с кавычками вокруг этой строки Content-Type, а вместо этого из-за аргумента опции -d.

Вы действительно используете """ три двойных кавычки в строке. Если да, то почему?

Независимо от того, у вас есть символ одиночного символа перед открытием { фигур скобки там, а затем три символа двойных букв после закрытия } скобки, которые, по-видимому, кажутся неправильными.

Почему вы не просто поставить -d аргумент в одинарные кавычки:

-d '{"text":"This should be recognized as an english text."}' 
+0

Хорошо, я только что узнал что-то новое. Спасибо :-) Это сработало наконец. На стороне сервера произошла ошибка. Я всегда возвращал HTTP 500 с одинарными кавычками. Python рассказал мне кое-что об ошибках в коде. Исправлено, оно работает ... Иногда вы просто этого не видите. Спасибо вам всем! – Andre

Смежные вопросы