Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为每个控制器设置不同的基本url_Java_Spring Boot_Rest_Controller - Fatal编程技术网

Java 如何为每个控制器设置不同的基本url

Java 如何为每个控制器设置不同的基本url,java,spring-boot,rest,controller,Java,Spring Boot,Rest,Controller,将行spring.data.rest.basePath=/api添加到我的application.properties文件中,使得每个端点都以/api开头 最重要的是,我希望每个控制器“增加”这个url。例如,假设我有两个不同的控制器,CustomerController和ProviderController 如果我在这两个函数中定义: //CustomerController @Autowired private CustomerService service; @GetMapping(&q

将行
spring.data.rest.basePath=/api
添加到我的
application.properties
文件中,使得每个端点都以
/api
开头

最重要的是,我希望每个控制器“增加”这个url。例如,假设我有两个不同的控制器,
CustomerController
ProviderController

如果我在这两个函数中定义:

//CustomerController
@Autowired
private CustomerService service;

@GetMapping("/getById/{id}")
public Customer findCustomerById(@PathVariable int id) {
    return service.getCustomerById(id);
}

//ProviderController
@Autowired
private ProviderService service;

@GetMapping("/getById/{id}")
public Provider findProviderById(@PathVariable int id) {
    return service.getProviderById(id);
}
我希望第一个是
/api/customer/getById/{id}
,第二个是
/api/provider/getById/{id}

是否有任何方法可以实现这一点,而无需在每个注释上手动键入


谢谢。

您可以在控制器上使用
@RequestMapping(“/example/url”)
注释

@Controller
@RequestMapping("/url")
class HomeController() {}

您可以在控制器上使用
@RequestMapping(“/example/url”)
注释

@Controller
@RequestMapping("/url")
class HomeController() {}

是的,您可以提取路径的公共部分并将其放入控制器上的
@RequestMapping

@RestController
@请求映射(“/api/customer”)
公共类客户控制器{
// ...
@GetMapping(“/getById/{id}”)
公共客户findCustomerById(@PathVariable int-id){
返回服务.getCustomerById(id);
}
}

@RestController
@请求映射(“/api/provider”)
公共类提供程序控制器{
// ...
@GetMapping(“/getById/{id}”)
公共提供程序findProviderById(@PathVariable int-id){
返回服务.getProviderById(id);
}
}

是的,您可以提取路径的公共部分并将其放入控制器上的
@RequestMapping

@RestController
@请求映射(“/api/customer”)
公共类客户控制器{
// ...
@GetMapping(“/getById/{id}”)
公共客户findCustomerById(@PathVariable int-id){
返回服务.getCustomerById(id);
}
}

@RestController
@请求映射(“/api/provider”)
公共类提供程序控制器{
// ...
@GetMapping(“/getById/{id}”)
公共提供程序findProviderById(@PathVariable int-id){
返回服务.getProviderById(id);
}
}

只需再次检查即可。如果我这样做,我将覆盖属性文件上的定义,对吗?我可以做
@RequestMapping(“/api2/customer”)
?是的。因此,在这种情况下,您的实际端点路径将是
/api2/customer/getById/{id}
@LuisFernandez。控制器上的
@RequestMapping
对于版本控制非常有用。通过简单地将
api
更改为
api2
,创建具有不同基本路径的另一个类要容易得多。只需重复检查。如果我这样做,我将覆盖属性文件上的定义,对吗?我可以做
@RequestMapping(“/api2/customer”)
?是的。因此,在这种情况下,您的实际端点路径将是
/api2/customer/getById/{id}
@LuisFernandez。控制器上的
@RequestMapping
对于版本控制非常有用。通过简单地将
api
更改为
api2
,创建具有不同基本路径的另一个类要容易得多。