2017-01-05 2 views
0

Si vous utilisez MSON, la seule façon dont je vois d'inclure actuellement la longueur de champ serait d'inclure dans la description. Y a-t-il des plans pour ajouter un soutien à cela ou y a-t-il des meilleures pratiques (solutions de contournement) utilisées à cette fin? Par exemple, dans la description MSON ci-dessous, comment puis-je spécifier que la longueur maximale de tokenType est de dire 20 caractères? (Exemple artificiel)Existe-t-il une meilleure pratique en matière de plan de ruchers pour spécifier la longueur (taille)/le format du champ?

## 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. 

Répondre

1

MSON ne prend pas en charge la spécification des options de validation comme une longueur maximale au moment. L'équipe API Blueprint a exploré l'ajout de ces fonctionnalités, mais cela reste ouvert à la discussion sur la meilleure façon d'y parvenir. Il pourrait y avoir beaucoup de validations, c'est donc un sujet important à couvrir, nous aurons donc besoin de trouver un moyen clair d'exprimer des validations, ce qui offre un support futur pour la déclaration afin que cela puisse évoluer. Il y a une discussion ouverte sur https://github.com/apiaryio/mson/issues/43 sur le sujet. Si vous avez des idées ou des propositions de syntaxe, ils seraient grandement appréciés.

Actuellement, vous pouvez fournir un schéma JSON personnalisé qui spécifie vos options de validation. À titre d'exemple, vous pouvez réaliser cette validation à l'aide du Plan directeur de l'API suivante:

+ 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" 
      ] 
     } 

Je suis d'accord, cette solution n'est pas grande puisque vous aurez besoin de dupliquer des informations dans vos attributs MSON et le schéma lui-même. Il serait beaucoup plus d'idée de pouvoir spécifier la validation directement dans MSON.

Je voulais juste mentionner, vous pouvez utiliser fixed pour tokenType pour indiquer qu'il a une valeur fixe qui ne change pas. Vous pouvez également utiliser enum dans le futur pour autoriser plusieurs options tokenType.

+0

+ 1 merci, j'ai pensé autant mais j'ai pensé que je demanderais. Dans l'attente de voir MSON évoluer pour soutenir cela à l'avenir. Pour l'instant, je peux simplement ajouter les structures d'objets dans la documentation de référence comme je l'ai fait dans le passé. Pouvoir utiliser utiliser la structure MSON dans la section d'introduction serait également utile. Peut voir cette API comme un exemple: http://paysafegroup.github.io/neteller_rest_api_v1/#/introduction/complex-json-objects –