在养蜂场蓝图中是否有最佳做法来指定字段长度(大小)/格式?

时间:2017-01-05 19:07:31

标签: apiary

如果使用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.

1 个答案:

答案 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选项。