Skip to content

InvalidApiVersionException thrown when required=false and path has no version segment #36751

@goransipic

Description

@goransipic

I have already reported this issue to the spring boot issues spring-projects/spring-boot#50293 because its hard to me to tell where this issue belongs.

Spring Boot: v4.0.6

Expected: required=false should handle missing path segment gracefully
Actual: throws InvalidApiVersionException: "No path segment at index 1"

Config:
spring.mvc.apiversion.use.path-segment=1
spring.mvc.apiversion.required=false

@RestController
class ActivitiesApiController(
    private val activityService: ActivityService
) {

    @GetMapping("/api/{version}/activities/foo", version = "1.0")
    fun getActivities1(): List<ItineraryItem> {
        return activityService.getActivities(ActivityFilter(), Pageable.unpaged()).content.map { it.toSharedModel() }
    }

    @GetMapping("/api/activities/foo")
    fun getActivities(): List<ItineraryItem> {
        return activityService.getActivities(ActivityFilter(), Pageable.unpaged()).content.map { it.toSharedModel() }
    }
  }
}

Reproduction:
GET /api/activities/foo → 400 InvalidApiVersionException
GET /api/1.0/activities/foo → 200 OK

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions