Android Retrofit返回状态500内部服务器错误

kla*_*abe 4 rest android retrofit

我正在像这样使用Retrofit来获取所有书籍并删除所有书籍。

 @GET("/books")
    BookListResponse getAllBooks();
    @DELETE("/clean")
    Response deleteAllBooks();
Run Code Online (Sandbox Code Playgroud)

但是返回了错误状态500(内部服务器错误)。我使用Chrome静态客户端应用程序测试了这两个静态呼叫,它们可以正常工作。

但是,如果我只想买一本书或删除这样一本书

 @GET("books/1")
    BookResponse getOneBook();
    @DELETE("books/1")
    Response deleteOneBook();
Run Code Online (Sandbox Code Playgroud)

他们可以正常工作。

所以我不确定这是服务器问题还是错过了什么?

非常感谢。

小智 5

这只是语义上的问题:当您对服务器说“请删除书”,但不说要删除哪本书时,服务器不知道要做什么(在发送DELETE时会发生这种情况/ books)。因此出现错误500。但是,当您说“请删除ID为1的书”时,服务器现在知道该怎么做(在将DELETE发送到/ books / 1时会发生这种情况)。

这样设置服务器是可以的,但是我从未见过任何REST服务可以删除特定模型的所有记录。同样,如果以这种方式对服务器进行编码也可以,只需确保请求以所需的方式到达服务器即可。

毕竟,如果出现错误500,请检查服务器。当然,问题不在Android方面。