Par souci de simplicité, disons que nous stockons des informations personnelles comme tant d'utilisateurs (JSON, mais ce n'est pas le point):REST - Comment allusion clients sur la façon de représenter les données tout en maintenant le découplage
{
"name": "John"
"age": 35
"sex": "M"
}
Nous voulons que le client de l'interface utilisateur crée un formulaire pour afficher ces informations et également pour créer de nouveaux utilisateurs ou mettre à jour des utilisateurs existants.
Alors, ma question est:
Comment cela peut-il être atteint d'une manière RESTful? Est-ce que REST prévoit même ce genre d'interactions, c'est-à-dire, suggérer aux clients comment afficher les ressources fournies?
Nous souhaitons donner aux clients un maximum de liberté sur la façon de représenter les ressources, mais aussi de les aider à nous renvoyer les données correctes sans trop de couplage entre backend et frontend.
Par exemple, nous pourrions avoir un modèle pour user
comme ceci:
{
"self": "/template/user"
"method": "GET"
"data": {
"fields": [
{
"name": "name"
"value": {
"data_type": "string"
}
},
{
"name": "age"
"value": {
"data_type": "number"
}
},
{
"name": "sex"
"value": {
"data_type": "string"
"options": [
"M",
"F"
]
}
}
]
}
}
Merci pour toute entrée que vous pourriez être en mesure de fournir.
Comme votre exemple contient du JSON, vous pouvez jeter un oeil à [json-schema] (http://json-schema.org/) pour décrire l'entrée réelle valide ou les champs attendus d'une requête. Pour les messages XML, vous pouvez utiliser XSD (ou DTD) pour apprendre au client ce qu'il est censé envoyer. Pour d'autres types de documents, il devient un peu moins clair sur la façon d'enseigner/soutenir un client. Les clients peuvent cependant avoir besoin d'un type de support spécial pour pouvoir supporter ces capacités, comme avec les types de média par défaut (ie application/json) ils peuvent ne pas respecter ces schémas –
Comme mon commentaire précédent était plus lié sur le le client sur quoi renvoyer "préoccupation et moins sur le support de vue, mon commentaire pourrait ne pas vous avoir aidé beaucoup je suppose. Si une API ou un serveur doit aider un client à suggérer aux clients comment présenter des formulaires, pourquoi ne pas envoyer une sortie HTML spécifique (y compris le formulaire) du serveur au client? Si le client est un navigateur (ou un composant compatible avec le navigateur), la présentation du formulaire n'est qu'un simple rendu de la réponse.Le client peut demander de l'aide via la négociation de contenu ('text/html') ou faire ses propres choses (' application/json') –
Merci beaucoup, mais voir mon commentaire à @voiceofunreason répondre pour voir pourquoi j'essayais d'éviter envoi de HTML. – Johnny