我们有一个OData v4 API,我们将其置于Azure API管理(AAM)服务之后,但是在配置路由/操作时遇到了问题。简而言之,问题是AAM将拒绝路由/操作的查询,除非它是显式配置的(您得到404错误),但是对于OData,每个操作的每个属性(属性)都可以有一个路由(端点) )。这个问题很快变得难以管理。
OData允许您查询单个属性/属性(例如GET~ / api / Person(1234)/ FirstName。如果我们把它放在AAM之后,我们需要将它定义为一个操作。只要只有少数几个就可以。其中,这可能意味着你很快就要定义数百/数千个操作(除非我错过了一些东西)。我们有一个包含大约35个顶级操作的API。每个资源平均有20个属性。这就是700个操作我们会需要定义。除了涉及的工作,这对AAM开发人员门户的用户来说是一个令人震惊的体验。
我希望有人可以告诉我一个解决这个问题的简单方法。我知道我可以编写这些的创建脚本。如果你使用OData $ select查询参数(这是我在此期间提出的建议),你也可以在某种程度上解决这个问题。我无法克服我在这里错过的感觉。有没有办法为操作定义某种通配符部分(例如/ Person / *)?我在AAM文档中找不到类似的东西。
尝试使用URL模板而不是明确地编写它们,即以这种方式定义/{entity}/{property}
的操作,它将匹配每个实体和每个实体的每个属性。如果要在URL末尾捕获多个段,也可以使用通配符。