3.0.1 • Published 8 years ago

hapi-controllers v3.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

hapi-controllers

Class-based controllers for Hapi Web Apps!

Features

  • Instantiates controller instances on each request for improved security
  • Controller dependencies injectable via the constructor method
  • Route config passed straight through to server.route(), so any valid hapi route options will work
  • Designed for use in TypeScript projects - happy (hapi!) to accept PRs for ES6

Usage

npm install --save hapi-controllers

You will need "experimentalDecorators": true in your tsconfig.json file.

MyController.ts:

import { Controller, Route } from 'hapi-controllers';
import { ISomeDependency } from './SomeDependency';

export class MyController extends Controller {

    constructor(private dependency: ISomeDependency) {
        super();
    }

    @Route({
        method: 'GET',
        path: '/stuff'
    })
    public stuffPage() {
        this.reply('This is the stuff page...');
    }

}

server.ts

import * as Hapi from 'hapi';
import { registerController } from 'hapi-controllers';
import { MyController } from './MyController';
import { SomeDependency } from './SomeDependency';

let deps = new SomeDependency();

let server = new Hapi.Server();
server.connection({ port: 8000 });

registerController(server,
    MyController,
    () => new MyController(deps));

server.start((err) => {
    if (!err) {
        console.log('Server Started.');
    }
});

API

The Controller base class has the following properties:

  • this.request - the Hapi.Request object
  • this.reply - the Hapi.ReplyNoContinue function relating to the current request

The request and reply are also passed to your controller function if you'd rather access them that way. The below will work just fine:

    @Route({
        method: 'GET',
        path: '/things'
    })
    public thingsPage(request: Hapi.Request, reply: Hapi.ReplyNoContinue) {
        reply('This is the things page...');
    }

License

MIT

3.0.1

8 years ago

3.0.0

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.0.0

8 years ago

0.0.1-security

9 years ago

1.0.12

9 years ago

1.0.11

9 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago