2020-08-23 06:33发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我了解每个人都知道,这很可能是我的人格障碍。 不过:有人能分享xs-app.json路由定义中" $ 1"的确切含义的线索吗? 像这样:
{ " source":" ^/some_url/(.*)$", " target":" $ 1", " destination":" some_destination" }
语法路由源/目标都是基于正则表达式的。 因此,我建议您仅搜索/阅读正则表达式的一般概念(尤其是在JavaScript的上下文中,因为这是应用路由器的写法)。 例如:
https: //stackstackflow.com/questions/16702924/how-to-explain-1-2-in-javascript-when-using-regular-expression
感谢托马斯, >
清除。 在文档中添加至少相似的参考来支持代码示例将很有帮助。
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。
target
路由不区分大小写
{" source":{" path":" ^/app1/(.*)$"," matchCase":false}," destination":" app-1"}
此示例与上一个示例非常相似,但我们不接受仅以/app1/开头的路径,而是接受 app1 大小写的任何变体 。 这意味着,如果我们收到/ApP1/a/B ,那么就会收到对 http://localhost:3001/ApP1/a/B 的请求 已发送。 注意:属性 matchCase 必须为boolean类型。 它是可选的,其默认值为 true 。
matchCase
true
使用目标和目标
{" source":" ^/app1/(.*)$"," target":"/img/before/$ 1/after"," destination":" app-1"}
使用 service , target 和 endpoint
service
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 属性中正则表达式的(。*)部分。
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文件中寻找目标名称,如果找不到,则在目标服务中寻找目标名称。
希望它会有所帮助:)
感谢康拉德提供详细说明
欢呼
最多设置5个标签!
语法路由源/目标都是基于正则表达式的。 因此,我建议您仅搜索/阅读正则表达式的一般概念(尤其是在JavaScript的上下文中,因为这是应用路由器的写法)。 例如:
https: //stackstackflow.com/questions/16702924/how-to-explain-1-2-in-javascript-when-using-regular-expression
感谢托马斯, >
清除。 在文档中添加至少相似的参考来支持代码示例将很有帮助。
Sergey嗨
基本上$ 1 =(。*)$,例如/some_url/abc将使$ 1 = abc。 可以用括号(...)括起来的模式的一部分在正则表达式中称为"捕获组"。
以下是sap/approuter模块中的更多示例和说明:
示例路线
例如,如果您的配置具有以下目标:
以下是一些示例路由配置:
使用
的路线目标
且没有目标
由于该路由没有
target
属性,因此不会进行路径重写。如果我们收到/app1/a/b 作为路径, 然后发送对 http://localhost:3001/app1/a/b 的请求。
源路径将附加到目标URL。
路由不区分大小写
此示例与上一个示例非常相似,但我们不接受仅以/app1/开头的路径,而是接受 app1 大小写的任何变体 。
这意味着,如果我们收到/ApP1/a/B ,那么就会收到对 http://localhost:3001/ApP1/a/B 的请求 已发送。
注意:属性
matchCase
必须为boolean类型。 它是可选的,其默认值为true
。使用
的路线目标
和目标
使用
的路由service
,target
和endpoint
收到路径为/app1/a/b 的请求时,将根据
target
属性中的规则完成路径重写。该请求 将会转发到http://localhost:3001/before/a/b/after。
注意:在正则表达式中,有捕获组一词。 如果正则表达式的一部分用括号括起来,则可以使用 $ +组号(从1开始)访问匹配的内容。
在最后一个示例中, $ 1 映射到
source
属性中正则表达式的(。*)部分。具有动态
的路线目标
和target
如果您配置了另一个目的地:
当接收到路径为/destination/myDestination/myTarget的请求时,目标将替换为" myDestination"中的url,目标将获得" myTarget",并且该请求将重定向到http://localhost :3002/myTarget
注意:您可以为目标值和目标值使用动态值(regex)或静态字符串
注意:approuter首先在mainfest.yaml文件中寻找目标名称,如果找不到,则在目标服务中寻找目标名称。
希望它会有所帮助:)
感谢康拉德提供详细说明
欢呼
一周热门 更多>