gg-express
v1.0.68
Published
**GG-Express** is an Express.js wrapper that enforces strong type requirements for `GET`, `POST`, `PUT`, and `DELETE` methods. It ensures that `req.query` and `req.body` follow strict structure definitions and automatically generates an `apiConnector` cla
Downloads
1,013
Maintainers
Readme
🚀 GG-Express
GG-Express is an Express.js wrapper that enforces strong type requirements for GET
, POST
, PUT
, and DELETE
methods. It ensures that req.query
and req.body
follow strict structure definitions and automatically generates an apiConnector
class file for easy use in front-end development. 🎉🎉🎉
✨ Features
- Strict Type Enforcement: Ensures that
req.query
andreq.body
follow the declared types. - Auto-Generated API Connector: Automatically creates a static API class for strongly-typed parameters.
- Seamless Front-End Integration: Simplifies the connection between the back-end and front-end by enforcing consistency.
🔑 Key Points
- Strict Parameter Enforcement: GG-Express ensures only the declared parameters are accessible in
req.body
orreq.query
. - Type-Safe Responses: Ensures that the backend responds with a structure that matches front-end expectations.
- API Connector Generation: It automatically generates a type-safe API connector class file for the front-end.
🛠 Installation
npm install gg-express
🧑💻 Use Case in Backend
import express from "express"
import GGExpress from "gg-express"
const app = express()
// Initialize GG-Express with backend and frontend file paths
const ggapp = new GGExpress(app, [
"./server/output-path-for-apiConnector.ts", // Path to generate apiConnector.ts backend file
"./myapp/output-path-for-apiConnector.ts", // Path to generate apiConnector.ts frontend file
])
// Example of a POST request with enforced parameters
ggapp.post(
"/api/item",
{
requireParams: {
parameter: { lotNumber: "number" },
dataType: "arrayObject",
structure: {
id: "number",
name: "string",
price: "number",
},
},
responseStructure: {
parameter: { numberOfPeople: "number", itemName: "string" },
dataType: "arrayObject",
structure: {
id: "number",
name: "string",
},
},
},
(req, res, next) => {
// Access only the required parameters declared above
const data = req.body.data
// Response structure follows the predefined format
return res.json({
message: "",
status: "SUCCESS",
data: [],
parameter: {
itemName: "",
numberOfPeople: 2,
},
})
}
)
// Start the server and generate the API files
app.listen(3000, () => {
ggapp.generateAPIFiles() // Generates the apiConnector class for front-end use
})
📲 Use Case in Frontend • The apiConnector.ts file will be automatically generated by the GGExpress class you configured in the backend
import GGApi from "apiConnector.ts"
const api = new GGApi()
const response = await api.post("/api/item", {
parameter: {
lotNumber: 2,
},
data: [
{
id: 1032,
name: "machete",
price: 4599,
},
],
})
console.log(response.data)
// Expected data structure:
// parameter: { numberOfPeople: number, itemName: string },
// structure: {
// id: number,
// name: string,
// }[],
// }
🔑 Keywords
- Express.js
- TypeScript
- API wrapper
- Type-safe API
- Backend-frontend integration