首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HapiJS全局路径前缀

HapiJS全局路径前缀
EN

Stack Overflow用户
提问于 2015-01-10 00:10:34
回答 9查看 8.1K关注 0票数 17

我正在HapiJS上编写API,并想知道如何获得全局前缀。例如,所有请求都应向以下方面提出:

代码语言:javascript
复制
https://api.mysite.com/v0/...

因此,我想将v0配置为全局前缀。docs (这里)似乎没有提到它--在HapiJS中有什么好方法来做到这一点吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-01-19 16:00:08

如果您将API路由逻辑放在Hapi插件中,比如./api.js

代码语言:javascript
复制
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'
};

将插件注册到服务器并传递一个可选的路由前缀,该前缀将被添加到插件中的所有路由:

代码语言:javascript
复制
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来验证这一功能。

票数 20
EN

Stack Overflow用户

发布于 2017-02-02 02:30:21

我能让它在所有的航线上运行

代码语言:javascript
复制
var server = new Hapi.Server()
...
server.realm.modifiers.route.prefix = '/v0'
server.route(...)
票数 11
EN

Stack Overflow用户

发布于 2015-03-20 12:28:35

马特·哈里森的回答是使用插件实现它的hapi方式。

或者,如果您不想创建一个插件只是为了添加一个前缀,您可以手工添加前缀到您的所有路由。

例如,我做了这样的事情:

代码语言:javascript
复制
  var PREFIX = '/v0';
  var routes = [/* array with all your root */];

  var prefixize = function (route) {  route.path = PREFIX + route.path;return route; }
  server.route(routes.map(prefixize));

好的一点是,有了这样的东西,您可以执行express-like安装。例:

代码语言:javascript
复制
 var prefixize = function (prefix, route) {  route.path = prefix + route.path;return route; }

server.route(adminRoutes.map(prefixize.bind({}, "/admin"))); //currying.
server.route(apiRoutes.map(prefixize.bind({}, "/api")));
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27871324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档