gpt4 book ai didi

Javascript 对象路由映射

转载 作者:行者123 更新时间:2023-11-30 20:41:44 26 4
gpt4 key购买 nike

所以我需要构建一个可以将 URL 路径映射到目标服务器的对象,如下所示:

/api         :   http://apiserver:8000
/api/v1 : http://apiv1server:8888
/api/v1/foo : http://foo:8080
/foo : http://foo:8080

function addRoute(path, server) {
setRoute(path, server)
}
addRoute('/api', 'http://apiserver:8000')
addRoute('/api/v1', 'http://apiv1server:8888')

每次查找都应该匹配最具体的路由,所以我最初的想法是这样一个对象:

 let map = {
api: {
v1: {
default: 'http://apiv1server:8000',
foo: 'http://foo:8080'
},
default: 'http://apiserver:8000'
},
foo: 'http://foo:8080'
}

这样你就可以像这样使用一个简单的查找函数:

function lookup(path) {
let result = null
path.split('/').forEach(key => {
result = map[key] || map[key].default
})
return result
}

但是尝试通过点(斜杠)表示法设置对象已被证明非常困难,有什么想法吗?

或者还有其他更简单的方法吗?

最佳答案

function lookup(path){
let arr = path.split("/").splice(1);
let m = {...map};
arr.forEach((e)=>{
m = m[e] || m.default;
})
return typeof(m) === "object" ? m.default : m;
}

你可以试试这个。

关于Javascript 对象路由映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49186453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com