Selon la demande, un REPOS simple comme approche. Il fonctionne presque de la même manière Codemwncis solution fonctionne, mais utilise l'en-tête Accept pour la négociation de contenu. D'abord le fichier de routes:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Vous ne spécifiez pas de tout type de contenu ici. Le faire est à mon humble avis uniquement nécessaire si vous voulez avoir un "spécial" Uri pour certaines ressources. Comme la déclaration de l'itinéraire pour /users/feed/
toujours y revenir dans Atom/RSS.
Le contrôleur de l'Application ressemble à ceci:
public static void createUser(User newUser) {
newUser.save();
user(newUser.id);
}
public static void updateUser(Long id, User user) {
User dbUser = User.findById(id);
dbUser.updateDetails(user); // some model logic you would write to do a safe merge
dbUser.save();
user(id);
}
public static void deleteUser(Long id) {
User.findById(id).delete();
renderText("success");
}
public static void user(Long id) {
User user = User.findById(id)
render(user);
}
Comme vous pouvez le voir j'ai seulement enlevé la getUserJSON méthode et renommé la méthode getUser. Pour les différents types de contenu pour le travail, vous avez maintenant de créer plusieurs modèles. Un pour chaque type de contenu. Par exemple:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
de l'utilisateur.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Cette approche donne des navigateurs toujours de la vue HTML, depuis tous les navigateurs web envoyer un texte/html type de contenu dans leur en-tête Accept. Tous les autres clients (éventuellement un peu de JavaScript basé sur les requêtes AJAX) peuvent définir leur propre type de contenu souhaité. À l'aide de jQuerys ajax() la méthode que vous pouvez faire ce qui suit:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Qui devrait obtenir les informations relatives à l'Utilisateur avec l'ID 1 au format JSON. Jeu actuellement en charge HTML, JSON et XML natif, mais vous pouvez facilement utiliser un autre type, soit par suite de la documentation officielle ou de l'utilisation de la négociation sur le contenu du module.
Si vous utilisez Eclipse pour le développement, je suggère d'utiliser le client REST plugin qui vous permet de tester vos itinéraires et de leur type de contenu correspondant.