Usage
For your basic setup you have to create a controller which will handle the
routes. Your controller needs to extend from the IController
interface to
implement the registerRoutes
method which will be called during the setup.
The route controller below will be created with a constructor which takes an
object as the parameter. This example will register a GET /hello
route and
sends a JSON object as a response with a greeting to the name provided by the
object from the constructor.
// ./MyRouteController.js
import { IController } from 'pop-api'
// Extend your route controller from the 'IController' interface.
export default class MyRouteController extends IController {
// The constructor takes an object as the parameter.
constructor({name}) {
super()
this.name = name
}
// Implement the 'registerRoutes' method from the 'IController interface.
registerRoutes(router, PopApi) {
router.get('/hello', this.getHello.bind(this))
}
// Router middleware to execute on the 'GET /hello' route.
getHello(req, res, next) {
return res.json({
message: `Hello, ${this.name}`
})
}
}
To initialize the API we create an array of the route controllers and their
constructor arguments we want to register. Then we just call the init
method
with the route controllers array, and the name and version your API (needed for
the Cli). The API should run by default on port 5000
.
// ./index.js
import { PopApi } from 'pop-api'
import MyRouteController from './MyRouteController'
import { name, version } from './package.json'
;(async () => {
try {
// Define the controllers you want to use.
const controllers = [{
Controller: MyRouteController, // The controller to register.
args: { // The arguments passed down to the
name: 'John' // The additional arguments to pass to
// your route controller.
}
}]
// Initiate your API with the necessary parameters.
await PopApi.init({
controllers, // The controllers to register.
name, // The name of your API.
version // The version of your API.
})
// API is available on port 5000.
// GET http://localhost:5000/hello -> { message: 'Hello, John' }
} catch (err) {
console.error(err)
}
})()