在 Azure API 管理中,是否可以有一个允许斜杠的模板参数(例如路径)?

In Azure API Management, is it possible to have a template parameter that allows slashes (e.g., a path)?

我正在使用 Azure Data Lake Storage 来存储大量文件。我在它前面设置了一个 Azure API 管理网关,它重写了 URI 并将后端服务设置为 ADLS REST API (Gen2).

此时我正在尝试配置 Path - Read 直通。我在 APIM 中的操作是 /data/{filesystem}/{path}?timeout={timeout},我希望能够按如下方式调用它:

timeout 可选)

filesystem: MyFileSystem
path:       Path/To/File.json
GET https://example.com/api/data/MyFileSystem/Path/To/File.json

但是,当我在 Azure 门户中导航到此操作并使用 Test 功能时,它报告以下错误:

{ "message": "Unable to identify Api or Operation for this request. Responding to the caller with 404 Resource Not Found." }

我知道 APIM 可能正在寻找匹配 /MyFileSystem/Path/To/File.json 的操作,但找不到。

就其价值而言,我的 Path - List 端点按我预期的方式工作,这就是为什么我知道它特别是 {path} 阻碍了我向上。

GET https://example.com/api/data/MyFileSystem?recursive=true&resource=filesystem

200 OK

我想我可以从模板参数更改为查询参数,但我现在宁愿避免使用该方法。那么,有没有办法让模板参数允许斜杠?

你说得对,三体,模板参数中的斜杠会让APIM找不到相应的操作来处理requests.What的更多,你URL编码斜杠是没用的,因为APIM会URL-如果您的参数包含会占用路径的特殊字符,请再次对其进行编码。 我在 Azure 存储上测试了你的方案,如果你用“\”代替“/”效果很好,你可以试一试:

是的。最后一个模板参数可能有斜线。使用{*路径}。