Selon la demande, une approche simple de type REST. Cela fonctionne presque de la même manière que la solution de Codemwncis, mais utilise l'en-tête Accept pour la négociation de contenu. D'abord le fichier des routes:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Vous ne spécifiez aucun type de contenu ici. Cela n'est à mon humble avis nécessaire que lorsque vous souhaitez avoir des URI "spéciaux" pour certaines ressources. Comme déclarer une route vers /users/feed/
pour toujours revenir dans Atom / RSS.
Le contrôleur d'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 supprimé la méthode getUserJSON et renommé la méthode getUser. Pour que différents types de contenu fonctionnent, vous devez maintenant créer plusieurs modèles. Un pour chaque type de contenu souhaité. Par exemple:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Cette approche donne aux navigateurs toujours la vue HTML, puisque tous les navigateurs envoient un type de contenu texte / html dans leur en-tête Accept. Tous les autres clients (éventuellement certaines requêtes AJAX basées sur JavaScript) peuvent définir leur propre type de contenu souhaité. En utilisant la méthode jQuerys ajax (), vous pouvez effectuer les opérations suivantes:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Ce qui devrait vous donner les détails sur l'utilisateur avec l'ID 1 au format JSON. Play prend actuellement en charge HTML, JSON et XML de manière native, mais vous pouvez facilement utiliser un type différent en suivant la documentation officielle ou en utilisant le module de négociation de contenu .
Si vous utilisez Eclipse pour le développement, je suggère d'utiliser le plugin client REST qui vous permet de tester vos routes et leur type de contenu correspondant.
C'est toujours une question populaire, mais les réponses les plus votées ne sont pas à jour avec la version actuelle du jeu. Voici un exemple de travail REST avec play 2.2.1:
conf / routes:
app / controllers / UserController.java:
la source
Utilisez Play! pour tout faire. L'écriture de services REST dans Play est très très simple.
Premièrement, le fichier de routes facilite l'écriture de routes conformes à l'approche REST.
Ensuite, vous écrivez vos actions, dans le contrôleur, pour chaque méthode API que vous souhaitez créer.
Selon la manière dont vous souhaitez renvoyer le résultat (XML, JSON, etc.), vous pouvez utiliser quelques méthodes. Par exemple, l'utilisation de la méthode renderJSON permet de rendre les résultats très facilement. Si vous souhaitez rendre XML, vous pouvez simplement le faire de la même manière que vous créeriez un document HTML dans votre vue.
Voici un bel exemple.
fichier de routes
Dossier de candidature
Fichier getUser.xml
la source
L'intégration avec une implémentation JAX-RS est une approche alternative possible à l'utilisation du routage HTTP intégré de Play. Pour un exemple RESTEasy, voir le RESTEasy Play! module .
Cette approche est logique si vous êtes déjà investi dans JAX-RS ou si vous avez besoin de certaines des fonctionnalités avancées REST fournies par JAX-RS, telles que la négociation de contenu. Sinon, il serait plus simple d'utiliser simplement Play directement pour servir JSON ou XML en réponse aux requêtes HTTP.
la source
tu devrais jeter un oeil à
http://www.lunatech-labs.com/open-source/resteasy-crud-play-module
c'est un module de jeu qui construit automatiquement une interface de repos, tout comme le module crud construit automatiquement une zone d'administration ...
la source
Il semble que cette approche soit interrompue dans Play version 1.2.3. Si vous téléchargez la source effectuée par @seb et mentionnée précédemment https://github.com/sebhoss/play-user-sample , la création d'un nouvel objet utilisateur en utilisant POST avec un objet JSON n'est plus possible.
Vous devez disposer de méthodes spécifiques pour la création à l'aide de POST json et xml. Décrit ici: https://groups.google.com/forum/#!topic/play-framework/huwtC3YZDlU
la source