java - 参数为空时的Spring Cloud feign行为
问题描述
我正在写一个假客户端
@RequestMapping(
path = "/TrackingServlet?CompanyName=Test&UserName=&BranchCode=",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE
)
ResponseEntity<String> getInfo(
@RequestParam("DocumentNumbers") String bill);
当它被调用时,url 会/TrackingServlet?CompanyName=Test&UserName&BranchCode
消除=
符号,但 API 需要这种格式的它,因为它是第三方 API,我们无法修改它。
也试过
@RequestMapping(
path = "/TrackingServlet?CompanyName=Test&UserName=",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE
)
ResponseEntity<String> getInfo(
@RequestParam("DocumentNumbers") String bill,
@RequestParam(name = "BranchCode", required = true) String BranchCode);
default ResponseEntity<String> getInfo(String bill) {
return getInfo(bill, "");
}
这甚至没有参数BranchCode
我正在使用org.springframework.cloud:spring-cloud-starter-openfeign:2.1.1.RELEASE
Spring Boot 版本 2.1.4.RELEASE
无论如何或解决方法可以将空参数保留在 url 中吗?
解决方案
如果您的 URL 是http://localhost:8080/trackingServlet/testing?userName=pratik
使用 feign 客户端:
@FeignClient(name = "tracking-servlet-service")
public interface TestFeignClient {
@GetMapping("/trackingServlet/testing")
public String getQueryParam(@RequestParam("userName") String name);
}
如果您有 2 个或更多参数,则可以添加相同的参数@RequestParam
例如网址http://localhost:8080/trackingServlet/testing?userName=pratik&companyName=Test
@FeignClient(name = "tracking-servlet-service")
public interface TestFeignClient {
@GetMapping("/trackingServlet/testing")
public String getQueryParam(@RequestParam("userName") String name,
@RequestParam("companyName") String companyName);
}
推荐阅读
- php - 拉拉维尔 | 大量数据的特殊验证
- sql - 过滤条件的性能输出
- reactjs - React 新手,无法让 ReactDOM 渲染 javascript 组件
- perl - 如何在 Windows 10 上重新启动我的 Perl 脚本
- angular - 如何获得与我的 Table 对象的列名称相对应的正确数量的 formsControl,而无需努力编写
- python - 如何创建一系列单词以作为超参数进行迭代?
- azure-devops - Azure DevOps - 对“迭代”字段执行操作的新工作项规则
- html - 如何解析 HTML 正文以获取表格数据?
- python - 将许多 .gz 文件加载到字典中时的内存问题
- php - 为在线仪表板存储大量 SQL 查询的安全方法?