2017-08-22 1 views
0

Compte tenu d'une ressource comme:conception API REST pour spécifier les options de valeur

GET: /api/examples/1 
{ 
    "id": 1, 
    "direction": "North" 
} 

qui soutient également POST, PUT, comment si les valeurs possibles pour "direction" être spécifiées?

De plus, existe-t-il une solution qui permet au consommateur de savoir quelles valeurs seront disponibles si ces valeurs sont contextuelles? par exemple. si l'exemple est rendu plus compliqué:

GET: /api/examples/ 
{[ 
    { 
    "id": 1, 
    "startLocation": "Kentucky, USA", 
    "direction": "North" 
    } 
    { 
    "id": 2, 
    "startLocation": "North Pole", 
    "direction": "South" 
    } 
}] 

(avec quelque chose de vaguement):

"options": [ 
    { 
    "value": "North", 
    "validWhen": "startLocation !== `North Pole`" 
    }, 
    { 
    "value": "East", 
    "validWhen": "true" 
    }, 
    ... 
] 

est-il une meilleure solution qu'une autre ressource liée de chaque example qui renvoie les actuellement options valides? Si non, comment le consommateur sait-il que la modification "startLocation" modifie l'ensemble de valeurs valide pour "direction"?

+0

Vous n'avez pas compris votre question complètement mais peut-être: https://en.wikipedia.org/wiki/HATEOAS? – Justas

Répondre

0

développiez ce @Justas a dit dans son commentaire, si je comprends bien vos besoins correctement, votre ressource pourrait ressembler à:

GET /examples/1 
{ 
    "startLocation": "Kentucky, USA", 
    ... 
    "_links": { 
     "travel-north": "/some/url", 
     ... 
    } 
} 
+0

Je ne pense pas avoir très bien décrit la question initiale. L'intention du champ "direction" était de dire que c'est une propriété sur la ressource qui a un ensemble fini de valeurs valides (soumettre un PUT qui assigne '" direction ":" squirrel "' résulterait en une erreur côté serveur), et qu'une autre propriété peut modifier l'ensemble des valeurs valides pour ce champ – DaveD

0

Je pense que ce que vous cherchez peut-être est un JSON-schéma. Cela vous permet de décrire strictement les options disponibles dans votre document JSON et vous pouvez créer un lien vers le document à l'aide d'un lien describedBy.