我一直在致力于一个简单的项目来创建 REST API。该项目有两个问题。如:
data.sql
:我编写的sql查询在其他项目上完美运行。但在这个项目中,它创建了表,但没有在表上插入数据。当我进入 H2 控制台并运行查询时,它工作正常。正如我所说,如果我创建新项目并运行创建和插入的查询表,没有任何问题,它就可以正常工作。
DogNotFoundException.java
:该类用于处理错误。如果请求的 id
不存在,请适当处理错误。但是当我运行应用程序并输入错误的 id
时,消息不会出现。如果默认情况下没有手动处理任何错误,则会给出 Whitelabel 错误页面,如果我输入错误id
,就会发生这种情况。
第一个是此[问题][1]的重复项 [1]:https://stackoverflow.com/questions/74088975/insert-data-from-sql-file-h2-database-spring-boot
总结一下,
spring.jpa.hibernate.ddl-auto=none
在第二个,
@ResponseStatus 不能替代 @ExceptionHandler。基本上,如果您有一个仅传递 HTTP 状态代码(在本例中为 404)的简单实现,则可以使用前者。如果您需要发送动态消息,那么您可以使用下面的实现
@ExceptionHandler(value= DogNotFoundException.class)
public ResponseEntity<String> returnNotFoundException(DogNotFoundException ex){
return new ResponseEntity<>(ex.getMessage(), HttpStatus.NOT_FOUND);
}
并在服务类上将您希望的消息返回给 DogNotFoundException
optionalBreed.orElseThrow(() -> new DogNotFoundException("Breed not found"));
希望这有帮助