返されるエンティティがnull
の場合、404ではなく204の内容を返すJersey REST APIがあります。HTTPの代わりにHTTP 404を返す方法ジャージのヌル値の204の応答コード
この問題を解決するために、私は現在ジャージーが以下のように404を返すようにリソースメソッド内で例外をスローする予定です。
if (feature == null) throw new WebApplicationException(404);
しかし、私は同じ問題を抱える様々なREST URIを持っています。それぞれのリソースメソッドに触れることなくそれらのすべてに対処する方法はありますか?
マイリソースメソッドは次のようになります。
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.example.webapi.domain.Feature;
import com.example.webapi.service.FeatureService;
@Component
@Path("features")
@Produces(MediaType.APPLICATION_JSON)
public class FeatureResource {
@Autowired
private FeatureService featureService;
@GET
public List<Feature> getFeatures() {
return featureService.listAllFeatures();
}
@GET
@Path("{featureCode}")
public Feature getFeature(@PathParam("featureCode") Integer featuresCode) {
return featureService.findFeatureByFeatureCode(featuresCode);
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response addFeature(Feature feature, @Context UriInfo uriInfo) {
Integer id = (Integer) featureService.createFeature(feature);
return Response.created(uriInfo.getAbsolutePathBuilder().path(id.toString()).build()).entity(feature).build();
}
}
Responseオブジェクトを通じて独自の応答コードを送信できます。 – markbernard