"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo personalizar las respuestas 404 (no encontradas) en Go con httprouter?

¿Cómo personalizar las respuestas 404 (no encontradas) en Go con httprouter?

Publicado el 2024-11-01
Navegar:675

How to Customize 404 (Not Found) Responses in Go with httprouter?

Personalizar "No encontrado" (404) Manejo con httprouter

Al desarrollar una API usando la biblioteca httprouter, manejar 404 (No encontrado) respuestas es una tarea crucial. Si bien la documentación menciona la posibilidad de manejar 404 manualmente, implementar un controlador personalizado puede ser un desafío.

Comprender el campo NotFound

La estructura httprouter.Router incluye un campo llamado NotFound, que es de tipo http.Handler. Esto significa que el valor de NotFound debe implementar el método ServeHTTP presente en la interfaz http.Handler.

Creación de un controlador personalizado de "No encontrado"

Para definir el suyo propio controlador personalizado, puede crear una función con una firma que coincida con el método ServeHTTP:

func MyNotFound(w http.ResponseWriter, r *http.Request) {
    // ... Custom handling logic
}

Conversión de la función en un controlador

Para convertir su función en un valor que implemente la interfaz http.Handler, puede utilizar el asistente http.HandlerFunc() función:

router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)

Invocación manual de controlador personalizado

Si desea llamar a su controlador personalizado manualmente desde otros controladores, proporcione el controlador con un ResponseWriter y una *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
}

Conclusión

Al seguir estos pasos, puede personalizar de manera efectiva el proceso de manejo de "No encontrado" en su API basada en httprouter, asegurando que los usuarios reciban respuestas apropiadas cuando intentando acceder a recursos inexistentes.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3