删除后我必须返回什么?

时间:2015-12-31 10:56:26

标签: rest spring-data

我想知道在使用DELETE方法调用REST API之后我必须返回什么。我无法找到任何标准/最佳实践。目前我的代码库使用了2种不同的方法,首先将已删除的资源返回到Response Body中,我只返回null。第二种方法(我不是很喜欢)我实例化了一个新的对象并将其返回。你认为最好的方法是什么?如果这两个对你来说都不好,哪一个是最好的(练习)方法?

以下是我实际拥有的样本:code sample

注意:当然,两种所描述的方法都是在DB上实际删除后执行的。

3 个答案:

答案 0 :(得分:4)

成功删除后,您应该返回空体和204 No Content状态代码。

当使用空主体返回200 OK时,某些客户端(例如EmberJS)会失败,因为他们希望解析一些内容。

答案 1 :(得分:0)

我会返回HTTP 200 OK以表示请求已成功。

如果您需要返回一个响应正文,如果删除触发了某些内容,我会使用附加正文的{{1}}。

答案 2 :(得分:0)

如果成功,则返回void表示HTTP 200 OK

    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public void delete(@PathVariable("id") Long id) {
        service.delete(id);
    }

修改 在前端控制器中,您可以使用以下内容:

@RequestMapping(...)
public ModelAndView deleteMySlide(Model model,...){
    try {
        //invoke your webservice Here if success
        return  new ModelAndView("redirect:/anotherPage?success=true");

    } catch (HttpClientErrorException e) {
        //if failure
        return new ModelAndView("redirect:/anotherPage?success=false");
    }

}

或:

@RequestMapping(...)
public String deleteMySlide(Model model,...){
    try {
        //invoke your webservice Here if success
         model.addAttribute("message","sample success");
        return "redirect:/successPage");;

    } catch (HttpClientErrorException e) {
        //if failure
        model.addAttribute("message","sample failure");
        return "redirect:/failurePage");
    }

}