Estoy buscando una mejor práctica en una página renderizada del lado del servidor para manejar un HTTP 404 si la página solicitada no tiene un recurso del lado del servidor subyacente.
Por ejemplo, supongamos que la página solicitada es http://localhost:3000/places/5 . En mi implementación de SSG:
export async function getServerSideProps(context) { const placeId = context.params.placeId; const places = await getPlace(placeId); if (!places.length) { /* is there anything here I can do to facilitate a 404? this place does not exist in the db */ } return { props: { places[0], }, }; } Debería explicarse por sí mismo, pero si la identificación solicitada, en este caso 5 , no es un lugar que está en mi base de datos, ¿cómo manejo esto como un HTTP 404?
Puede hacerlo devolviendo un objeto como el siguiente, con notFound: true . Y redirigiría a la página 404 si su versión de Next.js es mayor que v10 .
El booleano
notFoundpermite que la página devuelva un estado404y una página404. ConnotFound: true, la página devolverá un404incluso si antes se generó correctamente una página. Más aquí en la documentación oficial de Next.js.
export async function getServerSideProps(context) { const placeId = context.params.placeId; const places = await getPlace(placeId); if (!places.length) { return { notFound: true, } } return { props: { places[0], }, }; }