如果使用MSON,我看到当前包含字段长度的唯一方法是将其作为描述的一部分。是否有计划为此添加支持,或者是否有用于此目的的最佳实践(解决方法)?
作为示例,在下面的MSON描述中,我如何指定tokenType最大长度为20个字符? (人为的例子)
## accessToken
+ tokenType: `Bearer` (string) - The type of access token that was issued. Currently only 'Bearer' tokens are supported.
+ expiresIn: `1000` (number) - How much time in seconds until the token expires.
+ accessToken: `0.AQAAAVF-mqsiAAAAAAAbd0A71bIG8IUwcgHV7mAYiG7J.EAAQsWDnpqRj7WwyFVLTsdo0yXWh9L4` (string) - The access token to pass in the API call to access the protected resource.
答案 0 :(得分:2)
MSON不支持指定验证选项,例如此刻的最大长度。 API Blueprint团队一直在探索添加这些功能,但仍然可以讨论支持此功能的最佳方法。可能会有很多验证,所以它绝对是一个很大的主题,因此我们需要找到一种明确的方式来表达验证,这将为未来的声明提供支持,以便这可以发展。
有关该主题的https://github.com/apiaryio/mson/issues/43公开讨论。如果您有任何想法或语法建议,我们将不胜感激。
目前,您可以提供一个自定义JSON模式,用于指定验证选项。例如,您可以使用以下API Blueprint实现此验证:
+ Response 200 (application/json)
+ Attributes
+ tokenType: Bearer (fixed) - The type of access token that was issued.
+ expiresIn: 1000 (number) - How much time in seconds until the token expires.
+ accessToken: `0.AQAAAVF-mqsiAAAAAAAbd0A71bIG8IUwcgHV7mAYiG7J.EAAQsWDnpqRj7WwyFVLTsdo0yXWh9L4` (string) - The access token to pass in the API call to access the protected resource.
+ Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"tokenType": {
"type": "string",
"enum": [
"Bearer"
]
},
"expiresIn": {
"type": "number"
},
"accessToken": {
"type": "string",
"maxLength": 20
}
},
"required": [
"tokenType"
]
}
我同意,这个解决方案并不是很好,因为您需要复制MSON属性和架构本身的一些信息。能够直接在MSON中指定验证将更加明智。
只是想提一下,您可以fixed
使用tokenType
表示它有一个固定值,但不会改变。您还可以在将来使用enum
来允许多个tokenType
选项。