You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot POST请求被识别为静态资源的问题求助

解决Spring Boot请求被当作静态资源处理的问题

问题重现

发送POST请求:

POST http://localhost:8080/bookings/newBooking
Content-Type: application/json
{
  "bookingId": 1,
  "user": {
    "userId": 3,
    "username": "user1",
    "password": "password1",
    "email": "name@mail.com"
  },
  "paymentId": 4
}

收到错误:

"org.springframework.web.servlet.resource.NoResourceFoundException: No static resource bookings/newBooking.
org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585).org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:52)..."

相关代码

BookingController

package org.soa.booking;
@RestController
@RequestMapping("/bookings")
public class BookingController {

    private final BookingService bookingService;

    @Autowired
    public BookingController(BookingService bookingService) {
        this.bookingService = bookingService;
    }

    @PostMapping("/newBooking")
    public Booking createBooking(@RequestBody Booking booking) {
        return bookingService.createBooking(booking);
    }
}

SoaApplication

package org.soa;
@SpringBootApplication
@RestController
public class SoaApplication {
    public static void main(String[] args){
        SpringApplication.run(SoaApplication.class, args);
    }
}

build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.4'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'org.soa'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'javax.persistence:javax.persistence-api:2.2'
    implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.5'
}

sourceSets {
    main {
        java {
            exclude 'org/soa/passenger/**'
            exclude 'org/soa/flight/**'
            exclude 'org/soa/payment/**'
            exclude 'org/soa/airport/**'
        }
    }
}


tasks.named('test') {
    useJUnitPlatform()
}

解决思路

  • 确认组件扫描范围:@SpringBootApplication默认扫描主类所在包及其子包,主类在org.soa,BookingController在org.soa.booking子包,理论上能被扫描到。可显式指定扫描范围确保覆盖:
    @SpringBootApplication(scanBasePackages = {"org.soa", "org.soa.booking"})
    
  • 检查编译类是否存在:执行./gradlew clean build,查看编译后的build/classes/java/main/org/soa/booking/目录下是否有BookingController.class,确认sourceSets配置未误排除该类。
  • 验证请求正确性:用curl命令测试,确保请求方法、路径、格式无错误:
    curl -X POST -H "Content-Type: application/json" -d '{"bookingId":1,"user":{"userId":3,"username":"user1","password":"password1","email":"name@mail.com"},"paymentId":4}' http://localhost:8080/bookings/newBooking
    
  • 确认Controller初始化:在BookingController构造方法中添加日志输出,启动应用时查看控制台,确认Spring容器是否加载了该Controller。
  • 调整静态资源优先级:若存在自定义WebMvcConfigurer配置,确保API请求路径优先被Controller匹配,而非静态资源处理器。
  • 替换冲突依赖:Spring Boot 3.x基于Jakarta EE,将javax.persistence:javax.persistence-api:2.2替换为jakarta.persistence:jakarta.persistence-api:3.2.0,避免API兼容问题。

内容的提问来源于stack exchange,提问作者eberteo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:57:06