我正在实现(日食)使用我的Java API进行放置和获取的简单方法。

代码如下:

@Path("/jason")
public class JavajsonRestApi {

    List<Book> bookList = new ArrayList<>();

    @GET
    @Path("/json")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes({MediaType.APPLICATION_JSON})
    public List<Book> getJson() {
        return bookList;
    }

    @POST
    @Path("/json")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Book> postJson(Book book) {
        bookList.add(book);
        return bookList;
    }

}


bookList是在方法之外声明的全局变量。使用post post我将对象推到指定的端点。使用get可以从同一端点获取对象列表。

但是尽管添加到列表,但GET显示空列表,而且bookList在这里是全局变量。 GET应该显示已发布的书籍清单。

为什么会有奇怪的行为?

任何帮助表示赞赏。

最佳答案

只是一些可以帮助您的提示;


您的postJson()应该不会产生,也不应该返回列表
将@Consums添加到您的postJson()
您的getJson()不应该使用
我只使用您发布的bookList变量而不是全局变量,但可以正确地对其进行初始化(私有)


那应该可以解决您的问题,但不要忘记调试!检查您的方法返回的值

10-02 13:09