Koa.js was designed by the team behind express. It is an open source Node.js web framework. As their official website says, the framework aims to be a smaller, more expressive, and more robust foundation for web applications and APIs. Asynchronous function uses Koa.js to help eliminate the need for callbacks and significantly improves error handling.
Koa.js features
Koa.js has its own unique features
that make it more developer friendly and expressive. There under the highlights
of features in Koa.
1.Koa.js
is modern than other Node.js frameworks, Koa.js provides a bunch of new classes
and modules, which makes the development of complex applications simpler, which
is based on ES6. This helps developers to do creational maintainable
applications.
2.ES6
generators use to simplify synchronous programming and facilitate the flow of
controls.
3.Koa.js
has a small footprint compared to other Node.js frameworks. That helps
developers to write thinner middleware.
4.Koa.js
has built-in catchall for errors that help prevent website crashes.
5.Koa.js
uses a context object which is an encapsulation of request and response objects.
Who uses Koa.js?
Many companies
use Koa.js framework for their websites and web APIs. Below is a shortlist of
five globally recognized companies that use Koa.js framework.
1.
Paralect
2.
Pubu
3.
Bulb
4.
GAPO
5.
Clovis
Creating a server using
Koa.js framework
First, create a new directory for your application, then, using
the terminal, navigate to the directory of your app and run:
npm init
To create a Node.js package.
Then run to install Koa.js
npm i koa
Afterward, navigate to the index file on your app’s directory
using your favorite code editor and write the code below to create the server.
const koa = require('koa')
const app = new koa()
app.listen(2400, () => {console.log('Server running at PORT 2400')})
The code used to create the server is pretty straight forward,
just import the koa module and use its listen method. To start the server, run
node ‘name of your index file’ on the terminal.
Creating routes using
Koa.js
Unlike its predecessor, Express, Koa.js does not handle routing
by default. Instead, it uses a middleware library Known as Koa Router. So, to
implement routes in our server, we will first need to run the snippet below to
install Koa router library.
npm install koa-router
Then import the Koa router module onto your index file and add
your desired routes. Below is a code example to demonstrate route creation
using Koa.js.
const koa = require('koa')
const koaRouter = require('koa-router')// importing Koa-Router
const app = new koa()
const router = new koaRouter()
router.get('home', '/', (context) => {
context.body = "Welcome to my Koa.js
Server"
})
app.use(router.routes())
.use(router.allowedMethods())// registering routes to the
application
app.listen(2400, () => console.log('Server running at PORT 2400'))
Start the server again and test the route by sending a request
from the browser.
Handling Responses in
Koa.js
As we mentioned earlier, Koa response objects are embedded in
its context object. This means that we access the response object from the
context object. Let’s use a route definition like the one above to demonstrate
handling responses.
router.get('home', '/', (context) => {
context.status = 200 //This is the response status
context.body = "Welcome to my Koa.js
Server" // This is the response body
})
Handling errors in
Koa.js
To handle errors in Koa, add an error middleware early in your
index file. It must be defined early because only errors defined after the
middleware can be caught. The code below includes the error middleware in our
server.
const koa = require('koa')
const koaRouter = require('koa-router')// importing Koa-Router
const app = new koa()
const router = new koaRouter()
app.use( async (ctx, next) => {
try {
await next()
} catch(err) {
console.log(err.status)
ctx.status = err.status || 500;
ctx.body = err.message;
}
})
router.get('home', '/', (context) => {
context.body = "Welcome to my Koa.js
Server"
})
app.use(router.routes())
.use(router.allowedMethods())// registering routes to the
application
app.listen(2400, () => console.log('Server running at PORT 2400'))
To test this let’s modify the home route method to throw an
error when the route is called.
...
router.get('home', '/', (context) => {
context.throw('Sample error message', 500)
})
Now run the server again and call the endpoint using a browser
Comments
Post a Comment