Koa.js – Routing


Koa.js – Routing


”;


Web frameworks provide resources such as HTML pages, scripts, images, etc. at different routes. Koa does not support routes in the core module. We need to use the Koa-router module to easily create routes in Koa. Install this module using the following command.

npm install --save koa-router

Now that we have Koa-router installed, let’s look at a simple GET route example.

var koa = require(''koa'');
var router = require(''koa-router'');
var app = koa();

var _ = router();              //Instantiate the router
_.get(''/hello'', getMessage);   // Define routes

function *getMessage() {
   this.body = "Hello world!";
};

app.use(_.routes());           //Use the routes defined using the router
app.listen(3000);

If we run our application and go to localhost:3000/hello, the server receives a get request at route “/hello”. Our Koa app executes the callback function attached to this route and sends “Hello World!” as the response.

Routing Hello

We can also have multiple different methods at the same route. For example,

var koa = require(''koa'');
var router = require(''koa-router'');
var app = koa();

var _ = router(); //Instantiate the router

_.get(''/hello'', getMessage);
_.post(''/hello'', postMessage);

function *getMessage() {
	this.body = "Hello world!";
};
function *postMessage() {
   this.body = "You just called the post method at ''/hello''!n";
};
app.use(_.routes()); //Use the routes defined using the router
app.listen(3000);

To test this request, open your terminal and use cURL to execute the following request

curl -X POST "https://localhost:3000/hello"

Curl Routing

A special method, all, is provided by express to handle all types of http methods at a particular route using the same function. To use this method, try the following −

_.all(''/test'', allMessage);

function *allMessage(){
   this.body = "All HTTP calls regardless of the verb will get this response";
};

Advertisements

”;

Leave a Reply

Your email address will not be published. Required fields are marked *