Если поместить логику маршрутизации API внутри Hapi plugin, скажем ./api.js
:
exports.register = function (server, options, next) {
server.route({
method: 'GET',
path: '/hello',
handler: function (request, reply) {
reply('World');
}
});
next();
};
exports.register.attributes = {
name: 'api',
version: '0.0.0'
};
Вы регистрируетесь плагин с сервером и передать дополнительный маршрут префикс, который будет предварять все маршруты внутри плагиной :
var Hapi = require('hapi');
var server = new Hapi.Server()
server.connection({
port: 3000
});
server.register({
register: require('./api.js')
}, {
routes: {
prefix: '/v0'
}
},
function(err) {
if (err) {
throw err;
}
server.start(function() {
console.log('Server running on', server.info.uri)
})
});
Вы можете проверить, что это работает, запустив сервер и посещение http://localhost:3000/v0/hello
.
Я не могу показаться, чтобы получить этот метод работать. Я смог установить его непосредственно с помощью 'server.realm.modifiers.route.prefix = '/ v0'', но не с помощью параметров вложенности, как вы показываете. Вы уверены, что ваш подход работает? – tyler
Да, я только что протестировал его с помощью Hapi 8. Этот префикс доступен только при регистрации одного плагина. Поэтому, если вы регистрируете несколько плагинов, это не сработает. –
@MattHarrison Это, вероятно, хорошая идея, чтобы обновить свой ответ с помощью многословного отказа от ответственности :) – Gaston