Added a better error handling
This commit is contained in:
parent
f6f4a249c1
commit
18efd445e5
19
errors/DefaultError.js
Normal file
19
errors/DefaultError.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
class DefaultError extends Error {
|
||||||
|
constructor(code, message, cause, name) {
|
||||||
|
super(message)
|
||||||
|
this.code = code
|
||||||
|
this.name = name || "DefaultError"
|
||||||
|
this.cause = cause || "Internal Server Error"
|
||||||
|
this.message = message || "Internal Server Error"
|
||||||
|
this.isOperational = true
|
||||||
|
}
|
||||||
|
|
||||||
|
serialize() {
|
||||||
|
return {
|
||||||
|
code: this.code,
|
||||||
|
message: this.message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = DefaultError
|
||||||
@ -2,10 +2,18 @@ const express = require("express")
|
|||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
const registerService = require("../services/register")
|
const registerService = require("../services/register")
|
||||||
|
|
||||||
router.post("/", async (req, res) => {
|
router.post("/", async (req, res, next) => {
|
||||||
|
try {
|
||||||
const { email, username, password } = req.body
|
const { email, username, password } = req.body
|
||||||
const registerResult = registerService.register({ email, username, password })
|
const registerResult = registerService.register({ email, username, password })
|
||||||
return res.status(registerResult.code).json(registerResult)
|
return res.status(200).json({
|
||||||
|
code: 200,
|
||||||
|
message: "User successfully registered",
|
||||||
|
data: registerResult
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
next(error)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
module.exports = router
|
module.exports = router
|
||||||
15
server.js
15
server.js
@ -96,6 +96,21 @@ for (const route of routes) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.use((err, req, res, next) => {
|
||||||
|
const statusCode = err.statusCode || 500
|
||||||
|
|
||||||
|
logger.error(err.message, ["API", "red"])
|
||||||
|
|
||||||
|
if (typeof err.serialize === "function") {
|
||||||
|
return res.status(statusCode).json(err.serialize())
|
||||||
|
}
|
||||||
|
|
||||||
|
return res.status(500).json({
|
||||||
|
status: "error",
|
||||||
|
message: "Internal Server Error"
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
app.listen(process.env.WEB_PORT || 3000, () => {
|
app.listen(process.env.WEB_PORT || 3000, () => {
|
||||||
logger.log(`Server listening at port : ${process.env.WEB_PORT || 3000}`, ["WEB", "yellow"])
|
logger.log(`Server listening at port : ${process.env.WEB_PORT || 3000}`, ["WEB", "yellow"])
|
||||||
})
|
})
|
||||||
@ -1,22 +1,15 @@
|
|||||||
const crypto = require("node:crypto")
|
const crypto = require("node:crypto")
|
||||||
|
const DefaultError = require("../errors/DefaultError")
|
||||||
|
|
||||||
function register({ email, username, password }) {
|
function register({ email, username, password }) {
|
||||||
if (true) {
|
if (true) {
|
||||||
return {
|
return {
|
||||||
code: 200,
|
|
||||||
message: "User successfully registered",
|
|
||||||
data: {
|
|
||||||
id: crypto.randomUUID(),
|
id: crypto.randomUUID(),
|
||||||
username: username,
|
username: username,
|
||||||
email: email
|
email: email
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return {
|
throw new DefaultError(418, "I'm a teapot", "", "TeaPotExeception")
|
||||||
code: 418,
|
|
||||||
error: "I'm a tea pot",
|
|
||||||
message: "Error occured",
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user