当前位置: 首页 > 知识库问答 >
问题:

Java Rest@get有效,但@delete和@post路径不会被击中

马梓
2023-03-14

我有一个简单的REST客户端,带有GET、POST和DELETE方法。

奇怪的是,只有GET方法起作用,POST和DELETE都不起作用,响应当然是“404 Not found”。

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);
}
@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();
    }
}
// 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);
    }

我尝试用jersey或apache客户机请求,但它们都返回404,我现在就像绝望了。

希望你能给我一个方向。

共有1个答案

万俟皓
2023-03-14

这看起来像是JAX-RS继承的可能重复。您是否尝试过复制子类中的所有注释,或者根本不复制,也就是说根本不在实现类中使用@PathParam?

 类似资料:
  • 我对Java服务器端编程还不熟悉,我的问题基本上是使用Servlets(低级别,不使用spring mvc等)开始一个起点,然后从node开始构建。js后台,其中路由定义将以函数(,等),函数将在http方法之一(GET、post、PUT、DELETE)的参数中接收和。 如果有人可以帮助我,从一个servlet类中的路由(比如说)开始定义方法,这个servlet类映射到http方法,同时在其参数中

  • 我看了关于截击的Google IO 2013课程,我正在考虑改用截击。Volley是否支持向请求添加POST/GET参数?如果是,我怎么做?

  • 我是Java新手,正在尝试构建一个FX应用程序。我的一个函数旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但当我使用相对路径时,脚本就会中断。 问题出在方法“ReadAllBytes”中,该方法只适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件位于项目文件夹中。是否有其他方法可以用来读取文件内容,而不需要绝对路径? 提前多谢。下面是代码

  • 问题内容: 我正在制作一个iPhone应用程序,在上一个问题中,我被告知我需要一个用于archiverootobject和unarchiverootobject的有效文件路径,但我不知道该如何制作。那么,保存自定义类数组的有效文件路径是什么? 后续问题:在链接的问题上,我已经设置了使用无效保存的方法,但是仍然有效,有人会知道为什么吗? 问题答案: 您可以将其保存到应用程序支持文件夹中以bundle

  • GET和POST有什么区别?及为什么网上的多数答案都是错的 知乎回答 get: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 post: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1

  • 问题内容: 我正在工作一个内部Web应用程序。在IE10中,请求工作正常,但在Chrome中,所有AJAX请求(很多)都是使用OPTIONS发送的,而不是我提供的任何已定义方法。从技术上讲,我的要求是“跨​​域”。该站点位于localhost:6120上,我向AJAX发出请求的服务位于57124上。此关闭的jquery错误定义了该问题,但不是真正的解决方法。 如何在ajax请求中使用正确的http