1

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

1 回答 1

2

MSON 目前不支持指定验证选项,例如最大长度。API Blueprint 团队一直在探索添加这些功能,但仍需讨论支持此功能的最佳方式。可能有很多验证,所以它肯定是一个很大的话题,所以我们需要找到一种清晰的方式来表达验证,这为声明提供了未来的支持,这样它就可以发展。

在https://github.com/apiaryio/mson/issues/43上有关于该主题的公开讨论。如果您有任何想法或语法建议,他们将不胜感激。

目前,您可以提供一个自定义 JSON Schema 来指定您的验证选项。例如,您可以使用以下 API 蓝图实现此验证:

+ 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 中指定验证会更好。

只是想提一下,你可以用fixedfortokenType来表示它有一个不会改变的固定值。您还可以enum在将来使用以允许多个tokenType选项。

于 2017-01-05T19:28:54.210 回答