1. 使用查询参数调用 REST 服务
在 Spring Cloud 中,您可以使用 org.springframework.cloud.openfeign 发送查询参数。SpringQueryMap注释。
在您的后端代码中,您应该使用 MultiValueMap 和 LinkedMultiValueMap。键必须是字符串。
MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
params.add("Name", "Ilhan");
params.add("Number", 26);
ResponseEntity<String> getRestServiceName1Response= feignClient.postRestServiceName1(params, "HEADER_VALUE");
在您的客户端代码中,
@GetMapping(value = "${rest.service.name1}",
consumes = MediaType.APPLICATION_XML_VALUE,
produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<String> getRestServiceName1(
@SpringQueryMap MultiValueMap<String, String> params,
@RequestHeader(Constants.HEADER_NAME) String headerValue);
消耗值将设置您请求的 HTTP Content-Type字段。Produces 值将设置您请求的 HTTP Accept字段。使用Content-Type字段,您可以说请求正文的内容类型。使用Accept字段,您可以说出您将能够使用的响应正文的内容类型。PostMapping|GetMapping|etc 的值可以从外部属性加载。
2. 使用字符串体调用 REST 服务
@PostMapping(value ="${rest.service.name2}",
consumes = MediaType.APPLICATION_XML_VALUE,
produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<String> postRestServiceName2(
@RequestBody String request,
@RequestHeader(Constants.HEADER_NAME) String headerValue);
3. 使用 APPLICATION_FORM_URLENCODED_VALUE 调用 REST 服务
@PostMapping(value = "${rest.service.name3}", consumes = APPLICATION_FORM_URLENCODED_VALUE)
public ResponseEntity<String> postRestServiceName3(@RequestBody Map<String, ?> params);
您应该使用Map<String, ?>类型参数以及 org.springframework.web.bind.annotation。RequestBody注释。