From 3ec5f924296fc36778da4b66454f5fe3b3580072 Mon Sep 17 00:00:00 2001 From: Stephan <57194608+stephan418@users.noreply.github.com> Date: Tue, 17 May 2022 16:16:26 +0200 Subject: [PATCH] Add controllers for 404 and the root endpoint --- src/Middleware/error/defaultRoutes.ts | 27 +++++++++++++++++++++++++++ src/app.ts | 5 +++++ 2 files changed, 32 insertions(+) create mode 100644 src/Middleware/error/defaultRoutes.ts diff --git a/src/Middleware/error/defaultRoutes.ts b/src/Middleware/error/defaultRoutes.ts new file mode 100644 index 0000000..4a15997 --- /dev/null +++ b/src/Middleware/error/defaultRoutes.ts @@ -0,0 +1,27 @@ +import { Request, Response } from "express"; + +// Only called when no other route matches +export function notFoundHandler(req: Request, res: Response) { + return res.status(404).json({ + type: "error", + payload: { + message: `The ${req.method} HTTP method is implemented for '${req.path}'`, + _links: [ + { + rel: "root", + href: "/api", + }, + ], + }, + }); +} + +export function rootHandler(req: Request, res: Response) { + return res.status(200).json({ + type: "success", + payload: { + message: "Detleph event API", + detail: "This is the API for the Detleph event system", + }, + }); +} diff --git a/src/app.ts b/src/app.ts index 58762fe..749116d 100644 --- a/src/app.ts +++ b/src/app.ts @@ -12,6 +12,7 @@ import roleSchemaRouter from "./Routes/role_schema.routes"; import defaultErrorHandler from "./Middleware/error/handler"; import logger from "./Middleware/error/logger"; import debugLogger from "./Middleware/debug/logger"; +import { notFoundHandler, rootHandler } from "./Middleware/error/defaultRoutes"; // Set up async error handling require("express-async-errors"); @@ -79,9 +80,13 @@ async function main() { app.use("/api/role-schemas", roleSchemaRouter); + app.get("/", rootHandler); + // Error handling app.use(defaultErrorHandler); // Not working + app.use(notFoundHandler); + app.listen(process.env.PORT, () => { logger.info(`Listening on port ${process.env.PORT}`); });