Настройка «Не найдено» (404) Обработка с помощью httprouter
При разработке API с использованием библиотеки httprouter обработка 404 (не найдено) реагирование является важнейшей задачей. Хотя в документации упоминается возможность обработки ошибок 404 вручную, реализация специального обработчика может оказаться сложной задачей.
Понимание поля NotFound
Структура httprouter.Router включает поле с именем NotFound, который имеет тип http.Handler. Это означает, что значение NotFound должно реализовывать метод ServeHTTP, присутствующий в интерфейсе http.Handler.
Создание собственного обработчика «Не найдено»
Чтобы определить свой собственный пользовательский обработчик, вы можете создать функцию с сигнатурой, соответствующей методу ServeHTTP:
func MyNotFound(w http.ResponseWriter, r *http.Request) {
// ... Custom handling logic
}
Преобразование функции в обработчик
Чтобы преобразовать функцию в значение, реализующее интерфейс http.Handler, вы можете использовать помощник http.HandlerFunc() функция:
router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)
Вызов пользовательского обработчика вручную
Если вы хотите вызвать свой собственный обработчик вручную из других обработчиков, укажите обработчик с ResponseWriter и *Request:
func ResourceHandler(w http.ResponseWriter, r *http.Request) {
// ... Code to determine resource validity
if !resourceExists {
MyNotFound(w, r) // Manual invocation of custom handler
return
}
// ... Resource exists, serve it normally
}
Заключение
Следуя этим шагам, вы сможете эффективно настроить процесс обработки сообщения «Не найдено» в API на основе httprouter, гарантируя, что пользователи будут получать соответствующие ответы при попытка получить доступ к несуществующим ресурсам.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3