xs-app.json中的目标定义

2020-08-23 06:33发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我了解每个人都知道,这很可能是我的人格障碍。 不过:有人能分享xs-app.json路由定义中" $ 1"的确切含义的线索吗? 像这样:

 {
 " source":" ^/some_url/(.*)$",
 " target":" $ 1",
 " destination":" some_destination"
 } 

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我了解每个人都知道,这很可能是我的人格障碍。 不过:有人能分享xs-app.json路由定义中" $ 1"的确切含义的线索吗? 像这样:

 {
 " source":" ^/some_url/(.*)$",
 " target":" $ 1",
 " destination":" some_destination"
 } 
付费偷看设置
发送
4条回答
落灬小鱼
1楼 · 2020-08-23 07:08.采纳回答

语法路由源/目标都是基于正则表达式的。 因此,我建议您仅搜索/阅读正则表达式的一般概念(尤其是在JavaScript的上下文中,因为这是应用路由器的写法)。 例如:

https: //stackstackflow.com/questions/16702924/how-to-explain-1-2-in-javascript-when-using-regular-expression

hongfeng1314
2楼-- · 2020-08-23 07:18

感谢托马斯,

清除。 在文档中添加至少相似的参考来支持代码示例将很有帮助。

小灯塔
3楼-- · 2020-08-23 07:27

Sergey嗨

基本上$ 1 =(。*)$,例如/some_url/abc将使$ 1 = abc。 可以用括号(...)括起来的模式的一部分在正则表达式中称为"捕获组"。

以下是sap/approuter模块中的更多示例和说明:

示例路线

例如,如果您的配置具有以下目标:

 [{"名称":" app-1"," url":" http://localhost:3001"}] 

以下是一些示例路由配置:

使用目标且没有目标

的路线
 {" source":" ^/app1/(.*)$"," destination":" app-1"} 

由于该路由没有 target 属性,因此不会进行路径重写。
如果我们收到/app1/a/b 作为路径, 然后发送对 http://localhost:3001/app1/a/b 的请求。
源路径将附加到目标URL。

路由不区分大小写

 {" source":{" path":" ^/app1/(.*)$"," matchCase":false}," destination":" app-1"} 

此示例与上一个示例非常相似,但我们不接受仅以/app1/开头的路径,而是接受 app1 大小写的任何变体 。

这意味着,如果我们收到/ApP1/a/B ,那么就会收到对 http://localhost:3001/ApP1/a/B 的请求 已发送。

注意:属性 matchCase 必须为boolean类型。 它是可选的,其默认值为 true

使用目标目标

的路线
 {" source":" ^/app1/(.*)$"," target":"/img/before/$ 1/after"," destination":" app-1"} 

使用 service target endpoint

的路由
 {" source":" ^/odata/v2/(.*)$"," target":" $ 1"," service":" com.sap.appbasic.country"," endpoint":" countryservice  "} 

收到路径为/app1/a/b 的请求时,将根据 target 属性中的规则完成路径重写。
该请求 将会转发到http://localhost:3001/before/a/b/after。

注意:在正则表达式中,有捕获组一词。 如果正则表达式的一部分用括号括起来,则可以使用 $ +组号(从1开始)访问匹配的内容。
在最后一个示例中, $ 1 映射到 source 属性中正则表达式的(。*)部分。

具有动态目标 target

的路线
 {" source":" ^/destination/([^/]+)/(.*)$"," target":" $ 2"," destination":" $ 1"," authenticationType":" xsuaa  "} 

如果您配置了另一个目的地:

 [{"名称":" myDestination"," url":" http://localhost:3002"}] 

当接收到路径为/destination/myDestination/myTarget的请求时,目标将替换为" myDestination"中的url,目标将获得" myTarget",并且该请求将重定向到http://localhost :3002/myTarget

注意:您可以为目标值和目标值使用动态值(regex)或静态字符串

注意:approuter首先在mainfest.yaml文件中寻找目标名称,如果找不到,则在目标服务中寻找目标名称。

希望它会有所帮助:)

落灬小鱼
4楼-- · 2020-08-23 07:19

感谢康拉德提供详细说明

欢呼

一周热门 更多>