Dans JAX RS, les différences entre le retour de la Réponse et de Haricots ou de la Collection de Fèves (DTO)

Je travaille sur la construction d'une api REST. Ma question est, lors de l'utilisation de Jersey, quelles sont les différences entre mes services de construction et de retourner un objet de Réponse ou en retournant le haricot ou de la collection. Je suis le seul souci de réussite des appels, je suis de jeter des exceptions appropriées pour les erreurs et les situations exceptionnelles.

Ici est un exemple:

@Produces(MediaType.APPLICATION_JSON)
public Response search(FooBean foo){
    List<FooBean> results = bar.search(foo);
    return Response.ok(results).build();
}

vs

@Produces(MediaType.APPLICATION_JSON)
public List<FooBean> search(FooBean foo){
    List<FooBean> results = bar.search(foo);
    return results;
}

J'ai vu tant d'exemples, et je préfère le deuxième scénario, juste pour rendre les choses plus faciles à reconnaître la méthode de service. J'ai examiné les réponses de ces deux méthodes, et ils semblent être identiques.

Pensées?

  • Ils être identiques, compte tenu que vous n'avez pas de retour de certains Exception classe comme vous l'avez dit. Le Response offrir la possibilité de renvoyer n'importe quel type d'objet, et aussi de mettre un HttpStatus. Dans ce cas, il en résultera 200 OK. Mais tu ne peux pas passer à un autre statut que vous le souhaitez à l'aide de Response. C'est mon avis, bien sûr, mais j'aime le Response façon.
  • Voulez-vous dire que vous POUVEZ passer à un autre statut de la réponse à l'aide de l'objet de la Réponse? Si je retourne une Liste<FooBean>, le statut de la réponse est aussi 200 OK.
  • Oui, vous pouvez changer si vous le souhaitez. Par défaut Response.ok().entity(entity).build(); sera de retour 200 OK si l'entité n'est pas nul, sinon, sera de retour 204 NO CONTENT. Vous pouvez forcer à retourner un 200 OK état avec Response.ok().entity(entity).status(Status.OK).build(); même de l'entité null;
  • Je vois. Ainsi, en plus de préférence, quelle est la différence entre le retour du bean vs revenir avec la Réponse builder?
  • Non, si vous intercepter les exceptions avant ou intercepter après votre classe de ressource, il n'y a pas de diference...
InformationsquelleAutor Half_Duplex | 2013-04-30