2017-01-05 3 views
0

Если вы используете 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

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.

+0

+1 спасибо, я все понял, но думал, что попрошу. С нетерпением ждем появления MSON для поддержки этого в будущем. На данный момент я могу просто добавить структуры объектов как часть справочной документации, как это было в прошлом. Возможность использования использовать структуру MSON во вводном разделе также будет полезна. Вы можете увидеть этот API в качестве примера: http://paysafegroup.github.io/neteller_rest_api_v1/#/introduction/complex-json-objects –

Смежные вопросы