我正在構建REST API。我的問題是,在使用Jersey時,我的服務構建和返回Response對象或返回bean或集合之間有什麼區別。我只關心成功的電話,我正在拋出錯誤和特殊情況的適當例外。在JAX RS中,返回Response和Bean或Bean的集合(DTO)之間的區別
這裏有一個例子:
@Produces(MediaType.APPLICATION_JSON)
public Response search(FooBean foo){
List<FooBean> results = bar.search(foo);
return Response.ok(results).build();
}
與
@Produces(MediaType.APPLICATION_JSON)
public List<FooBean> search(FooBean foo){
List<FooBean> results = bar.search(foo);
return results;
}
我見過用這兩個例子中,我更喜歡第二種方案中,只是爲了更容易地識別服務方法。我已經檢查了對這兩種方法的反應,它們似乎是相同的。
想法?
他們是相同的,考慮到你無法返回一些'Exception'類像你說的。 'Response'提供返回任何類型的對象的選項,並設置一個'HttpStatus'。在這種情況下,它會產生'200 OK'。但是你不能像使用Response一樣切換到另一個狀態。當然,這是我的看法,但我喜歡'Response'方式。 – 2013-04-30 17:03:17
您的意思是您可以使用Response對象切換到不同的響應狀態? 如果我返回列表,響應狀態也是200 OK。 –
2013-04-30 17:44:12
是的,你可以切換,如果你想。默認情況下'Response.ok()。entity(entity).build();'如果實體不爲空則返回'200 OK',否則返回'204 NO CONTENT'。你可以用'Response.ok()。entity(entity).status(Status.OK).build();'強制返回'200 OK'狀態,即使實體爲空; – 2013-04-30 19:45:46