例如,在任何应用程序控制器中,当暴露一个休息 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 否则考虑默认一个。