Gdy Falcon (-Framework) nie może znaleźć trasy dla konkretnego żądania, zwracane jest 404. Jak mogę przesłonić ten domyślny handler? Chcę rozszerzyć obsługę niestandardową odpowiedzią.Zastąp domyślną obsługę błędu Falcon, gdy żadna z tras nie pasuje do
5
A
Odpowiedz
4
Domyślna handler gdy zasób nie pasuje to path_not_found responder:
Ale jak widać w sposobie falcon API _get_responder, to nie może być ręczne bez jakiejś małpy łatania.
O ile widzę, istnieją dwa różne sposoby korzystania z funkcji obsługi niestandardowe:
- podklasą klasy API i zastąpić metodę _get_responder więc wywołuje niestandardowego obsługi
- Użyj domyślnego trasa, która pasuje do dowolnej trasy, jeśli żadna z aplikacji nie jest dopasowana. Prawdopodobnie wolisz korzystać z sink zamiast trasy, więc przechwytujesz dowolną metodę HTTP (GET, POST ...) przy użyciu tej samej funkcji.
Polecam drugą opcję, ponieważ wygląda o wiele ładniej.
Twój kod będzie wyglądać następująco:
import falcon
class HomeResource:
def on_get(self, req, resp):
resp.body = 'Hello world'
def handle_404(req, resp):
resp.status = falcon.HTTP_404
resp.body = 'Not found'
application = falcon.API()
application.add_route('/', HomeResource())
# any other route should be placed before the handle_404 one
application.add_sink(handle_404, '')