Según la solicitud, un enfoque simple similar al REST. Funciona casi de la misma manera que la solución de Codemwncis, pero utiliza el encabezado Aceptar para la negociación de contenido. Primero el archivo de rutas:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
No especifica ningún tipo de contenido aquí. Hacerlo es en mi humilde opinión solo necesario cuando quieres tener URIs "especiales" para ciertos recursos. Como declarar una ruta a /users/feed/
para regresar siempre en Atom/RSS.
controlador
La aplicación se ve así:
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);
}
Como se puede ver que sólo se retira el método getUserJSON y renombrado el método getUser. Para que funcionen diferentes tipos de contenido, ahora debe crear varias plantillas. Uno para cada tipo de contenido deseado. Por ejemplo:
usuario.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Este enfoque da navegadores siempre la vista HTML, ya que todos los navegadores envían a/html tipo de contenido de texto en su encabezado Aceptar. Todos los demás clientes (posiblemente algunas solicitudes AJAX basadas en JavaScript) pueden definir su propio tipo de contenido deseado. método que utiliza jQuerys ajax() que podría hacer lo siguiente:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Cuál debe conseguir que los detalles acerca del usuario con el ID 1 en el formato JSON. Play actualmente admite HTML, JSON y XML de forma nativa, pero puede usar fácilmente un tipo diferente ya sea siguiendo el official documentation o usando el content negotiation module.
Si está utilizando Eclipse para el desarrollo, le sugiero que utilice el REST client plugin que le permite probar sus rutas y su tipo de contenido correspondiente.
Le agradecería si puedes ayúdame aquí http://stackoverflow.com/questions/32699420/url-parameters-are-not-being-passed-by-curlpost –