Conforme solicitação, uma abordagem simples semelhante a REST. Funciona quase da mesma forma que a solução da Codemwncis, mas usa o cabeçalho Aceitar para negociação de conteúdo. Primeiro, o arquivo de rotas:
GET /user/{id} Application.user
POST /user/ Application.createUser
PUT /user/{id} Application.updateUser
DELETE /user/{id} Application.deleteUser
Você não especifica nenhum tipo de conteúdo aqui. Fazer isso é IMHO apenas necessário quando você deseja ter URIs "especiais" para determinados recursos. Como declarar uma rota para /users/feed/
sempre retornar em Atom / RSS.
O controlador de aplicativo tem a seguinte aparência:
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 você pode ver, apenas removi o método getUserJSON e renomeei o método getUser. Para que diferentes tipos de conteúdo funcionem, agora você precisa criar vários modelos. Um para cada tipo de conteúdo desejado. Por exemplo:
user.xml:
<users>
<user>
<name>${user.name}</name>
. . .
</user>
</users>
user.json:
{
"name": "${user.name}",
"id": "${user.id}",
. . .
}
user.html:
<html>...</html>
Essa abordagem dá aos navegadores sempre a visualização HTML, já que todos os navegadores enviam um tipo de conteúdo text / html em seu cabeçalho Aceitar. Todos os outros clientes (possivelmente algumas solicitações AJAX baseadas em JavaScript) podem definir seu próprio tipo de conteúdo desejado. Usando o método jQuerys ajax (), você pode fazer o seguinte:
$.ajax({
url: @{Application.user(1)},
dataType: json,
success: function(data) {
. . .
}
});
Isso deve fornecer a você os detalhes sobre o usuário com o ID 1 no formato JSON. Atualmente, o Play oferece suporte nativo a HTML, JSON e XML, mas você pode usar facilmente um tipo diferente seguindo a documentação oficial ou usando o módulo de negociação de conteúdo .
Se você estiver usando o Eclipse para desenvolvimento, sugiro usar o plugin do cliente REST, que permite testar suas rotas e o tipo de conteúdo correspondente.
Esta ainda é uma pergunta popular, mas as respostas com maior votação não estão atualizadas com a versão atual do jogo. Aqui está um exemplo funcional de REST com play 2.2.1:
conf / routes:
app / controllers / UserController.java:
fonte
Use o Play! para fazer tudo. Escrever serviços REST no Play é muito fácil.
Em primeiro lugar, o arquivo de rotas torna simples escrever rotas que estejam em conformidade com a abordagem REST.
Em seguida, você escreve suas ações, no controlador, para cada método de API que deseja criar.
Dependendo de como você deseja retornar o resultado (XML, JSON etc), existem alguns métodos que você pode usar. Por exemplo, o uso do método renderJSON permite que os resultados sejam renderizados com muita facilidade. Se você deseja renderizar XML, pode fazê-lo da mesma maneira como faria para construir um documento HTML em sua Visualização.
Aqui está um bom exemplo.
arquivo de rotas
Arquivo de aplicativo
arquivo getUser.xml
fonte
A integração com uma implementação JAX-RS é uma possível abordagem alternativa ao uso do roteamento HTTP integrado do Play. Para um exemplo do RESTEasy, consulte o RESTEasy Play! módulo .
Essa abordagem faz sentido se você já investiu em JAX-RS ou se precisa de alguns dos recursos avançados REST que o JAX-RS fornece, como negociação de conteúdo. Caso contrário, seria mais simples usar o Play diretamente para servir JSON ou XML em resposta a solicitações HTTP.
fonte
você deveria dar uma olhada em
http://www.lunatech-labs.com/open-source/resteasy-crud-play-module
é um módulo para jogar que cria automaticamente uma interface de descanso, assim como o módulo crud cria automaticamente uma área administrativa ...
fonte
Parece que essa abordagem foi quebrada na versão 1.2.3 do Play. Se você baixar o código-fonte feito por @seb e mencionado anteriormente https://github.com/sebhoss/play-user-sample , a criação de um novo objeto de usuário usando POST com um objeto JSON não será mais possível.
Você precisa ter métodos específicos para a criação usando POSTs json e xml. Descrito aqui: https://groups.google.com/forum/#!topic/play-framework/huwtC3YZDlU
fonte