@GetMapping(value="/book/{id}")
public ResponseEntity<Book> getBook(@PathVariable String id){
Book book = bookService.getBook();
// Which is best Approach for resource instance not found ?
if(book == null) {
// This one
return new ResponseEntity<>(book, HttpStatus.NO_CONTENT);
//OR
return new ResponseEntity<>(book, HttpStatus.NOT_FOUND);
//OR
throw new DataNotFoundException("Book with id " + id + " Does not exist");
}
return new ResponseEntity<>(book , HttpStatus.OK);
}
我还在StackOverflow上读到,当条件下的资源在数据库中不存在而不是不存在时,应该使用httpstatus.not_found
。
处理这个问题的最佳方法是什么?
使用Spring MVC时,返回结果时通常有两种选择,要么使用普通对象,要么使用ResponseEntity
类。这两个都不比另一个好。此外,您还可以决定是否使用异常来分离错误处理。
鉴于此,通过引发异常的第三个场景与前两个选项中的一个基本相同。默认情况下,抛出异常将导致500内部服务器错误,但可以通过使用@responsestatus
注释进行更改,例如:
@ResponseStatus(HttpStatus.NOT_FOUND) // Or @ResponseStatus(HttpStatus.NO_CONTENT)
public class DataNotFoundException extends RuntimeException {
}
或者,也可以定义异常处理程序。同样,这可以通过使用普通对象或responseentity
来完成,例如:
@ResponseStatus(HttpStatus.NOT_FOUND) // Or @ResponseStatus(HttpStatus.NO_CONTENT)
@ExceptionHandler(DataNotFoundException.class)
public Book handleNotFound(DataNotFoundException ex) {
return null;
}
@ExceptionHandler(DataNotFoundException.class)
public ResponseEntity<Book> handleNotFound(DataNotFoundException ex) {
return new ResponseEntity<>(null, HttpStatus.NOT_FOUND); // Or HttpStatus.NO_CONTENT
}
现在,这意味着还有两个选择,要么选择httpstatus.not_find
(404),要么选择httpstatus.no_content
(204)。虽然在技术上可以使用这两种状态,但它们具有不同的含义:
现在,如果您请求/book/123
,但没有ID为123的书,那么它可以被视为不存在的资源,因此,httpstatus.not_find
最有意义。
我创建了一个Android库,它使用JavaPoet生成类。它在我当地的工作环境中运行良好;即使我将库模块包含到另一个项目中。 现在我正在尝试通过bintray把我的项目放到网上。项目上传正确,但是当我把它包含在一个新项目中并构建项目时,我得到了这样一条消息: 错误:错误的服务配置文件,或在构造处理器对象javax时引发异常。注释。处理。处理器:我。阿弗拉克。过滤处理器。无法实例化FilterPr
我已经尝试从一个jar文件导入(例如快捷hull3d)在处理2.2.1和3.2.1在Linux和Mac上根据这里给出的说明 我的目录结构如下所示 ../处理/Sketchbook/库/quickhull3d/库/quickhull3d。罐子 处理IDE首选项将素描本位置设置为... /Processing/Sketchbook 在我的。pde文件,我有开场白 我得到了错误: 找不到用于Quickh
问题内容: 我一直在尝试使用NetBeans Ide创建一个简单的Restful WebService。 我的Java EE版本是:Java EE 7 Web。 我创建了一个新的Java Web应用程序,设置此ContexPath: 。 现在,运行我的应用程序,浏览器在以下位置显示我的页面: 因此,一切正常。 然后,我尝试使用RESTful Web服务向导创建一个简单的Restful资源。 因此,
我正在做一个项目,编译并运行我的IDE工作正常。所有资源都找到了,它正常工作。然而,当我构建我的. jar时,它能够找到一些资源,但不是全部。我的项目结构看起来是这样的: 当我运行jar文件时,它能够找到图像并使用它们,但是当我尝试访问html文件时,它不会打开。下面是jar的项目结构; 我以前从未处理过jar文件,所以这似乎是我犯的一个非常明显的错误。感谢您的帮助,谢谢! 编辑:访问找不到的文件
我正在使用ADT 我的styles.xml:
在处理中,我有以下错误: 我正在尝试运行“exemplePPhys2D_geeknessrain.pde”,可以在 https://projets.pingbase.net/libro/projects/hub/repository/revisions/7/entry/EXEMPLES/pphys2d/examples/exemplePPhys2D_geeknessrain/exemplePPhy