Reputation: 7719
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.
Upvotes: 8
Views: 21552
Reputation: 1
Try this:
@RequestMapping(ControllerConstant.BASE_API_URL + "/audit")
where:
public class ControllerConstant {
public static final String BASE_API_URL = "/whatever/api/v1";
}
This way the base URL is centralized in ControllerConstant.BASE_API_URL
.
I hope this helps.
Upvotes: -1
Reputation: 2858
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/
Upvotes: 11
Reputation: 543
You can define your path as a property in the .properties file and read it using the @Value annotation
example
in the application.properties
common.basepath = /test
in the controller use
@RequestMapping(@Value("${common.basepath}"))
Upvotes: 3
Reputation: 131346
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 { ... }
Upvotes: 15