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注释。

REST开发 rest调用_REST开发