Java Spring引导在控制器api上获取404错误
我正在学习有关Sprint引导的教程,并创建了一个实践应用程序。在我的控制器类中,我将映射放入其中,当我运行应用程序时,我在所有api上不断收到404个错误。我循序渐进地学习了教程,但我不想在不测试api是否正常工作的情况下继续学习。我试图改变端口,以防引起问题,但我想可能是有什么东西阻塞了,这就是为什么我得到404错误 控制器类Java Spring引导在控制器api上获取404错误,java,spring-boot,Java,Spring Boot,我正在学习有关Sprint引导的教程,并创建了一个实践应用程序。在我的控制器类中,我将映射放入其中,当我运行应用程序时,我在所有api上不断收到404个错误。我循序渐进地学习了教程,但我不想在不测试api是否正常工作的情况下继续学习。我试图改变端口,以防引起问题,但我想可能是有什么东西阻塞了,这就是为什么我得到404错误 控制器类 @RestController @RequestMapping("/api/book") public class BookController
@RestController
@RequestMapping("/api/book")
public class BookController {
private final BookService bookService;
public BookController(BookService bookService) {
this.bookService = bookService;
}
@GetMapping("/all")
public ResponseEntity<List<Book>> getAllBooks() {
List<Book> books = bookService.findAllBooks();
return new ResponseEntity<>(books, HttpStatus.OK);
}
@GetMapping("/find/{id}")
public ResponseEntity<Book> getBookByID(@PathVariable("id") Long id) {
Book book = bookService.findBookByID(id);
return new ResponseEntity<>(book, HttpStatus.OK);
}
@PostMapping("/add")
public ResponseEntity<Book> addBook(@RequestBody Book book) {
Book newBook = bookService.addBook(book);
return new ResponseEntity<>(newBook, HttpStatus.CREATED);
}
@PutMapping("/update")
public ResponseEntity<Book> updateBook(@RequestBody Book book) {
Book updateBook = bookService.updateBook(book);
return new ResponseEntity<>(updateBook, HttpStatus.OK);
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<?> deleteBook(@PathVariable("id") Long id) {
bookService.deleteBook(id);
return new ResponseEntity<>(HttpStatus.OK);
}
}
主要
邮递员的输出
{
"timestamp": "2021-02-21T16:33:50.027+00:00",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/book/add"
}
更新
URL:http://localhost:8080/api/book/add
使用Post请求和所选JSON,这是我在JSON正文中的内容
{
"bookName": "The Hunger Games",
"authorLastName": "Collins",
"authorFirstName": "Suzanne",
"isbn": "9780439023481",
"genre": "young adult"
}
如果您的其他包层次结构位于带有
@SpringBootApplication
注释的主应用程序下方,则隐式组件扫描将覆盖您
如果其他包中有bean/组件不是主包的子包,则应手动将它们添加为@ComponentScan
@ComponentScan(basePackages = "com.*")
@SpringBootApplication
对于多个路径,您可以进行如下所述的更改
@ComponentScan({"com.x","com.y"})
相应地更改软件包名称。我不知道为什么在发布问题后,这篇帖子会被否定。我确实看了别人的帖子,尝试了那里的解决方案,但没有luckCan u向我们显示邮递员代码和url?我认为spring没有扫描您的@RestController类,因此这些端点不可用,所以请尝试将它们包含在
@SpringBootApplication@ComponentScan(basePackages=“com.*)中
changecom
用你的项目包名我会试试看,我想我读到@SpringBootApplication
已经包含了@ComponentScan
,可能我误解了我添加了@ComponentScan(basePackages=“controller.*)
,但没有用。哇,明白了。这是因为我在eclipse中创建的包不在主包下。所以我重新组织了一切,现在一切正常了。我没有添加componetScan,因为我重新组织了主包下的所有内容。我不知道为什么它一开始没有这么做。感谢您提供有关@ComponentScan
{
"bookName": "The Hunger Games",
"authorLastName": "Collins",
"authorFirstName": "Suzanne",
"isbn": "9780439023481",
"genre": "young adult"
}
@ComponentScan(basePackages = "com.*")
@SpringBootApplication
@ComponentScan({"com.x","com.y"})