UNPKG

gg-express

Version:

**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

117 lines (98 loc) • 3.25 kB
# šŸš€ 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` and `req.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` or `req.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 ```bash npm install gg-express ``` šŸ§‘ā€šŸ’» Use Case in Backend ```typescript 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 ```typescript 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