我想知道在使用DELETE方法调用REST API之后我必须返回什么。我无法找到任何标准/最佳实践。目前我的代码库使用了2种不同的方法,首先将已删除的资源返回到Response Body中,我只返回null。第二种方法(我不是很喜欢)我实例化了一个新的对象并将其返回。你认为最好的方法是什么?如果这两个对你来说都不好,哪一个是最好的(练习)方法?
以下是我实际拥有的样本:code sample
注意:当然,两种所描述的方法都是在DB上实际删除后执行的。
答案 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");
}
}