Ich habe einen einfachen REST-Client mit GET POST und DELETE-Methoden.Java Rest @GET funktioniert, aber @DELETE und @POST Pfade werden nicht getroffen
Seltsame Dinge sind, dass nur GET-Methoden funktionieren, weder POST noch DELETE werden nicht einmal getroffen und die Antwort ist natürlich "404 Not Found".
Hier ist mein REST-Service und der Kunde:
Schnittstelle:
public interface MyInterface {
@GET
@Path("/content")
@Produces(MediaType.APPLICATION_JSON)
Response getAirports();
@DELETE
@Path("/content/{id}")
@Produces(MediaType.APPLICATION_JSON)
Response deleteAirport(@PathParam("id") String id);
}
Umsetzung:
@Path("/source")
public class SourceService extends AbstractService implements MyInterface {
@Override
public Response getContent() {
DBCollection collection = getDBCollection("content");
DBCursor cursor = collection.find();
String serialize = JSON.serialize(cursor);
return Response.status(Response.Status.OK).entity(serialize).build();
}
@Override
public Response deleteContent(@PathParam("id") Integer id) {
DBCollection collection = getDBCollection("content");
BasicDBObject query = new BasicDBObject();
query.append("id", id);
collection.remove(query);
return Response.status(Response.Status.OK).build();
}
}
Auftraggeber:
// This is working
public void getContent() {
WebTarget path = collect.path("/content");
Response response = path.request().get();
LOGGER.info("collect.ping: " + response.readEntity(String.class) + "\n");
}
// This is not working
public void deleteContent(Integer id) {
WebTarget path = collect.path("/content/"+id);
Response response = path.request(MediaType.APPLICATION_JSON).delete();
System.out.println("object deleted:"+response);
}
Ich habe versucht, mit Jersey anfordernden oder apa che Kunden, aber alle kehren 404 zurück und ich bin jetzt hoffnungslos.
Ich hoffe, Sie können mir eine Richtung geben.
Versuchen Sie, Ihr Problem ein wenig zu reduzieren. Lassen Sie die Implementierung sofort eine OK-Antwort zurückgeben. – Chill
@Chill Ich habe gerade versucht, das PathParam zu entfernen und es wurde getroffen und OK zurückgegeben. Wie ist es damit? Sende ich den Pfadparameter falsch? – neocorp
Versuchen Sie, es nur in einen String ... wie „Flughafen“ Auch Sie einen Parameter in der Client als dies vorbei: public void deleteAirport (String iata) { Aber Sie nicht verwenden „iata“ in Ihrem Client-Code ... –