Nếu bạn đặt logic API định tuyến của bạn bên trong một Hapi plugin, nói ./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'
};
Bạn đăng ký các plugin với một máy chủ và vượt qua một tiền tố tuyến đường bắt buộc, mà sẽ được thêm vào phía trước cho tất cả các tuyến đường của bạn trong các plugin :
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)
})
});
Bạn có thể xác minh điều này hoạt động bằng cách khởi động máy chủ và truy cập http://localhost:3000/v0/hello
.
Nguồn
2015-01-19 16:00:08
tôi dường như không thể có được phương pháp làm việc này. Tôi đã có thể thiết lập nó trực tiếp với 'server.realm.modifiers.route.prefix = '/ v0'', nhưng không phải bằng các tùy chọn lồng nhau như bạn hiển thị. Bạn có chắc cách tiếp cận của bạn hoạt động không? – tyler
Có, tôi vừa thử nghiệm nó với Hapi 8. Tùy chọn tiền tố này chỉ có sẵn khi đăng ký một plugin duy nhất. Vì vậy, nếu bạn đang đăng ký nhiều plugin, nó sẽ không hoạt động. –
@MattHarrison Đây có thể là một ý tưởng tốt để cập nhật câu trả lời của bạn với tuyên bố từ chối nhiều plugin :) – Gaston