Ich habe eine Jersey-REST-API, die 204 zurückgibt Kein Inhalt anstelle von 404, wenn die zurückzugebende Entität null
ist.Rückgabe von HTTP 404 anstelle von HTTP 204 Antwortcode für Nullwerte in Jersey
Um dieses Problem zu beheben, plane ich derzeit, eine Ausnahme innerhalb der Ressource-Methode zu werfen, so dass es Jersey zwingen konnte, 404 wie unten zurückzugeben.
if (feature == null) throw new WebApplicationException(404);
Aber ich habe verschiedenen REST URIs, die aus dem gleichen Problem leiden. Gibt es eine Möglichkeit, alle anzugehen, ohne jede einzelne Ressourcenmethode zu berühren?
Meine Ressource Methoden wie folgt aussehen:
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();
}
}
Sie können Ihren eigenen Antwortcode über das Response-Objekt senden. – markbernard