Hapi.js е малка Node рамка за разработване на задните уеб приложения.
В тази статия ще разгледаме как да създаваме back end приложения с Hapi.js.
Приготвяме се да започнем
Можем да започнем, като създадем папка на проекта, влезем в нея и стартираме:
npm install @hapi/hapi
за инсталиране на пакета.
Създаване на сървър
След като инсталираме пакета, можем да създадем просто приложение за задния край, като напишем:
const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: '0.0.0.0' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello World!'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
Изискваме пакета hapi
.
След това стартираме метода Hapi.server
, за да създадем сървъра.
host
е настроено на '0.0.0.0'
, за да слуша за заявка от всички IP адреси.
И след това, за да създадем маршрут, извикваме метода server.route
.
method
е методът на заявката.
handler
е функцията за обработка на заявки.
След това извикваме server.start
, за да стартираме сървъра.
След това добавяме манипулатора на грешки unhandledRejection
за изящно излизане от приложението, когато то се срине.
Удостоверяване
Можем да добавим удостоверяване към нашето приложение с няколко реда код.
Например, можем да напишем:
const Bcrypt = require('bcrypt'); const Hapi = require('@hapi/hapi'); const users = { john: { username: 'john', password: '$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm', name: 'John Doe', id: '1' } }; const validate = async (request, username, password) => { const user = users[username]; if (!user) { return { credentials: null, isValid: false }; } const isValid = await Bcrypt.compare(password, user.password); const credentials = { id: user.id, name: user.name }; return { isValid, credentials }; }; const start = async () => { const server = Hapi.server({ port: 4000 }); await server.register(require('@hapi/basic')); server.auth.strategy('simple', 'basic', { validate }); server.route({ method: 'GET', path: '/', options: { auth: 'simple' }, handler(request, h) { return 'welcome'; } }); await server.start(); console.log('server running at: ' + server.info.uri); }; start();
за добавяне на просто удостоверяване с модулите bcrypt
и hapi-basic
.
Обектът users
съдържа потребителските данни.
Функцията validate
получава данните за заявката от параметъра request
.
Получаваме потребителя чрез username
.
След това извикваме Bcrypt.compare
, за да сравним паролата, която сме въвели, с хеша, който сме съхранили в свойството password
на обекта users
.
Тогава имаме:
server.auth.strategy('simple', 'basic', { validate });
за да добавите основната стратегия за удостоверяване.
И ние определяме нашия маршрут с server.route
.
Свойството options.auth
е зададено на името на стратегията за удостоверяване, която добавихме.
Сега, когато отидем на маршрута /
, виждаме диалоговия прозорец за влизане.
И когато въведем john
за потребителско име и secret
за парола, виждаме отговора welcome
.
Заключение
Можем да създадем просто приложение с удостоверяване с Hapi.