Почему не распознается полный URL-адрес в Python-Bottle Restful - PullRequest
0 голосов
/ 05 октября 2019

Я делаю обновление для MongoDB, используя Bottle на Python. Я пытаюсь получить два параметра из URL, но только могу прочитать один. Я проверяю URL, и он не завершен. Я отправляю:

curl http://localhost:8080/update?id="10011-2017-TEST"&result="Violation%20Issued"

Но сервер бросает

GET curl http://localhost:8080/update?id="10011-2017-TEST"
@route('/update', method='GET')
def update_data():
    print("URL"  + request.url)

URL показывает:

http://localhost:8080/update?id="10011-2017-TEST" 

, поэтому я не получаювторой параметр. Мне нужно отправить параметр следующим образом:

curl http://localhost:8080/update?id="10011-2017-TEST"&result="Violation%20Issued"

1 Ответ

0 голосов
/ 05 октября 2019

Проблема здесь не в бутылке или вашем веб-сервере;это то, как вы используете кавычки в командной строке.

Вам нужно процитировать ваш вызов следующим образом:

curl "http://localhost:8080/update?id=10011-2017-TEST&result=Violation%20Issued"

"&" имеет особое значение для большинства оболочек (например, bash),в том числе и твой. Когда вы назвали его таким, каким вы были, оболочка интерпретировала амперсанд без кавычек (&) как «это конец моей команды, и, пожалуйста, запустите его в фоновом режиме». (На самом деле, я удивлен, что вы также не видели сообщение типа Unknown command: result=Violation%20Issued)

Так что ваш curl вызов был фактически эквивалентен просто:

curl http://localhost:8080/update?id=10011-2017-TEST

, которыйсоответствует тому, что вы видели на своем сервере.

Подробнее о читайте, как процитировать командные строки .

...