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
72 lines (65 loc) • 2.1 kB
text/typescript
import axios from "axios"
import { staticRouteInterface_hotel } from "./staticRouteInterface_hotel"
export class GGApi {
constructor() {}
get<T extends keyof staticRouteInterface_hotel["get"]>(
url: T,
requireParams: staticRouteInterface_hotel["get"][T]["requireParams"]
): Promise<staticRouteInterface_hotel["get"][T]["responseStructure"]> {
return new Promise((resolve, reject) => {
axios
.get(url as string, { params: { data: requireParams } })
.then((response) => {
resolve(response.data)
})
.catch((error) => {
reject(error)
})
})
}
post<T extends keyof staticRouteInterface_hotel["post"]>(
url: T,
requireParams: staticRouteInterface_hotel["post"][T]["requireParams"]
): Promise<staticRouteInterface_hotel["post"][T]["responseStructure"]> {
return new Promise((resolve, reject) => {
axios
.post(url as string, { data: requireParams })
.then((response) => {
resolve(response.data)
})
.catch((error) => {
reject(error)
})
})
}
put<T extends keyof staticRouteInterface_hotel["put"]>(
url: T,
requireParams: staticRouteInterface_hotel["put"][T]["requireParams"]
): Promise<staticRouteInterface_hotel["put"][T]["responseStructure"]> {
return new Promise((resolve, reject) => {
axios
.put(url as string, { data: requireParams })
.then((response) => {
resolve(response.data)
})
.catch((error) => {
reject(error)
})
})
}
delete<T extends keyof staticRouteInterface_hotel["delete"]>(
url: T,
requireParams: staticRouteInterface_hotel["delete"][T]["requireParams"]
): Promise<staticRouteInterface_hotel["delete"][T]["responseStructure"]> {
return new Promise((resolve, reject) => {
axios
.delete(url as string, { data: { data: requireParams } })
.then((response) => {
resolve(response.data)
})
.catch((error) => {
reject(error)
})
})
}
}