Python обнять API вернуть пользовательский код http
После того, как я долго искал его и спрашивал: https://gitter.im/timothycrosley/hug Я не могу найти решение.
то, что я ищу, - это способ вернуть пользовательский http-код, скажем, 204, если в get
конечная точка объяснение проблем маршрутизации здесь
но я не могу найти способ вернуть любой другой код, кроме 200, с нулевым ответом
3 ответа
Нашел пример в своем репо ( https://github.com/berdario/hug/blob/5470661c6f171f1e9da609c3bf67ece21cf6d6eb/examples/return_400.py)
import hug
from falcon import HTTP_400
@hug.get()
def only_positive(positive: int, response):
if positive < 0:
response.status = HTTP_400
Вы можете вызвать сокол HTTPError, например:
raise HTTPInternalServerError
подробности см.: https://falcon.readthedocs.io/en/stable/api/errors.html
Основываясь на ответе jbasko, похоже, что объятия ожидают, что статус будет текстовым представлением кода состояния HTTP.
Так, например:
>> print (HTTP_400)
Bad Request
Итак, для более полного примера вы можете использовать подсказку всех ответов:
STATUS_CODES = {
100: "100 Continue",
101: "101 Switching Protocols",
102: "102 Processing",
200: "200 OK",
201: "201 Created",
...
}
response.status = STATUS_CODES.get(200) # 200 OK
response.status = STATUS_CODES.get(404) # 404 Not Found
# etc
...
Я составил список всех кодов status_ в этом списке
Помимо ответов jbasko и toast38coza, в соколе есть функция полезности для получения текстового представления числовых кодов состояния:
falcon.get_http_status (200)
https://falcon.readthedocs.io/en/stable/api/util.html
так:
import hug
import falcon
@hug.get()
def only_positive(positive: int, response):
if positive < 0:
response.status = falcon.get_http_status(400)