我正在为比赛和日程表开发一个简单的RESTful服务。通过包含JSON正文的POST请求创建锦标赛时,会将锦标赛插入,BiMap
在DAO实现中声明如下:
private BiMap<String, Tournament> tournaments = Maps.synchronizedBiMap(HashBiMap.create());
创建锦标赛时,将返回其关联的字符串ID,以便用户将来可以参考该锦标赛。他/她可以从执行以下请求的新锦标赛中获取信息:
GET http://localhost:8080/eventscheduler/c15268ce-474a-49bd-a623-b0b865386f39
但是,如果找不到具有此类ID的锦标赛怎么办?到目前为止,我将返回204响应。好吧,泽西岛null
从其中一种方法返回时正在为我做这件事。这是与上述路线相对应的方法:
@Path("/{id}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Tournament getTournament(@PathParam("id") String id) {
Optional<Tournament> optTournament = tournamentDao.getTournament(id);
if (optTournament.isPresent())
return optTournament.get();
return null;
}
我的问题是:可以返回204: No Content
响应,还是应该返回404
响应,因为找不到资源?
如果我应该将其更改为404,则会出现一个明显的问题:我应该更改方法签名吗?由于现在Tournament
可能不会返回(类型为)锦标赛,因此方法应该看起来有所不同。我应该使用该Response
类型作为返回类型吗?
{content: ''}
),则204响应将是不合适的。