0

例如,在任何应用程序控制器中,当暴露一个休息 api 时,我们可以在控制器级别将 PathParams/UriParams 设置为可选,因此客户端并不总是需要传递它。现在我想在 RAML 级别实现相同的目标。我可以看到他们的文档是这样说的。

“尽管可以将 URI 参数明确指定为可选参数,但当直接用斜杠 (/) 括起来时,它应该是必需的。在这种情况下,URI 参数构成一个完整的 URI 路径片段,例如 .../{objectId}/。 ... 允许 URI 包含相邻的斜杠通常没有意义,不包含任何字符,例如 ...//.... 因此,只有当 URI 参数与其他参数相邻时,才应将其指定为可选文本。例如,/people/~{fieldSelectors} 表示 URI 参数 {fieldSelectors} 可以为空,因此是可选的,这意味着 /people/~ 是一个有效的相对 URI。

这确实让我们可以尝试在资源 URL 的末尾使用字母 e,g /{someLetter}{uriParam} .. 的组合。我确实尝试过这种方式,但它总是提到“找不到资源”

问题仅与 RAML 配置有关。例如,这是我必须为其添加 url 参数的示例资源 url。

/test-api/{testId}

现在我想让它保留客户端决定是否通过 UriParameter。

这是我正在尝试的示例 RAML 代码。

/test-api/{testId}:
    uriParameters:
      testId?: string

/test-api/{testId}:
    uriParameters:
      testId: string
      required: false

/test-api{testId}:
    uriParameters:
      testId: string
 

现在这三种方法都不起作用。

第一种方法只是使用“?”将 testId 设为可选。但是,如果我跳过 UriParam,则表明没有为此找到资源。

第二种方法 required: false 也不起作用看起来 RAML 忽略了这个验证它总是希望我在 /test-api 之后甚至有一个“/”

第三种方法不起作用,因为它再次希望我把 UriParam 否则考虑默认一个。

4

0 回答 0