@RestController 返回 404 not found 除了在主类中

Posted

技术标签:

【中文标题】@RestController 返回 404 not found 除了在主类中【英文标题】:@RestController returns 404 not found except in main class 【发布时间】:2021-12-27 01:13:35 【问题描述】:

这是我的项目结构:

当我尝试通过邮递员在 ApartmentController 中调用此 get API 时,我收到 404 错误。

@RestController
@RequestMapping("/api/apartment")
class ApartmentController(private val apartmentService: ApartmentService) 
  @GetMapping
  fun getAllApartments(apartment: Apartment): List<Apartment> 
      return apartmentService.getAllApartments()
  

  @PostMapping
  fun createApartment(apartment: Apartment): Apartment 
      return apartmentService.createApartment(apartment)
  

但是,当我在主类 LeaderRealEstateApplication 中执行相同操作时,我得到了 200 个响应。

@SpringBootApplication()
class LeaderRealEstateApiApplication

fun main(args: Array<String>) 
  runApplication<LeaderRealEstateApiApplication>(*args)


@RestController
@RequestMapping("/api/apartments")
class TestResource(private val apartmentService: ApartmentService) 
  @GetMapping
  fun test(): List<Apartment> 
      return apartmentService.getAllApartments()
  

不确定我做错了什么,我尝试将其添加到我的 SpringBootApplication 注释中:

@SpringBootApplication(scanBasePackages = ["com.leaderrealestate"]) 

【问题讨论】:

你能把你所有类的包声明都加进去吗?谢谢! 【参考方案1】:

在您的第二种方法中,您有@RequestMapping("/api/apartments"),但在您的第一种方法中,您有@RequestMapping("/api/apartment")。请注意第一个 @RequestMapping 中的额外 s。如果这不是您问题中的类型,这可能是 404 的原因。

【讨论】:

不,我添加了不同的名称,因为启动时的 spring 告诉我已经定义了“/api/apartment”的路径。所以在邮递员中,我调用“/api/apartments/”并得到结果,然后删除 s 并得到 404。 明白了,那你能把你所有的类的包声明都加进去吗?谢谢!

以上是关于@RestController 返回 404 not found 除了在主类中的主要内容,如果未能解决你的问题,请参考以下文章

ajax成功请求到后台,但是前端报404错误

spring bootspring boot中使用@RestController不起作用,不返回json,依旧去找访问接口的请求地址对应的页面

Junit MockMvc 使用 URL 中的路径变量执行 POST,返回 404 未找到

spring 控制器返回 404 并带有 post 和 file 以生成响应实体

whitelabel 错误页面 404 spring boot 微服务 Rest Controller

我Nginx服务器设置了404,也能跳转到404但是返回状态码是200?