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)
Другие вопросы по тегам