I have a spring boot application with bunch of rest controllers (@RestController).
I use the following property in application.properties
file to set the base url:
server.context-path=api
This property changes the base url for my static resources, too. I don't want them to change, how can I do that?
Note1
Why I want to do that? I want to serve a single page application (react app) on my server, and I want most of my requests made to /api/**
to be authorized. I want all other GET requests to be handled by the react router. This is why I don't want the base URL for my static resources to change.
You should not use this property as it changes the context path for the whole application.
Why not simply specify /api/yourResource
in the RequestMapping
annotation such as :
@RestController
@RequestMapping("/api/oneController")
public class OneController { ... }
.....
@RestController
@RequestMapping("/api/anotherController")
public class AnotherController { ... }
You can use
spring.data.rest.base-path=/api
in your application properties with
@BasePathAwareController
on your controller class.
When you use
server.context-path=ctx
the context path applies to the whole application including
@Controller
@RestController
@BasePathAwareContoller
@RepositoryRestController
@RepositoryRestResource
When you use
spring.data.rest.base-path=/api
the prefix applies to
@BasePathAwareContoller
@RepositoryRestController
@RepositoryRestResource
And you can use both
server.context-path=ctx
spring.data.rest.base-path=/api
to apply a prefix like /ctx/api/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With