Spring Cloud中使用Feign客户端调用REST服务的不同形式

发布于:2023-01-04 ⋅ 阅读:(321) ⋅ 点赞:(0)

简单又直接,三种调用REST服务的办法

扫码关注《Java学研大本营》,加入读者群,分享更多精彩

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

参考文章: https://bm-celalkartal.medium.com/different-calling-forms-of-rest-services-with-feign-client-in-spring-cloud-52ad27cc1d03

推荐书单

1.《名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)》

购买链接:https://item.jd.com/12793864.html

Java微服务架构是当下流行的软件架构设计方案,可以快速地进行代码编写与开发,维护起来也非常方便。利用微架构技术,可以轻松地实现高可用、分布式、高性能的项目结构开发,同时也更加安全。

《名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)》一共15章,核心内容为SpringBoot、SpringCloud、Docker、RabbitMQ消息组件。其中,SpringBoot 是SpringMVC技术的延伸,使用它进行程序开发会更简单,服务整合也会更容易。SpringCloud是当前微架构的核心技术方案,属于SpringBoot的技术延伸,它可以整合云服务,基于RabbitMQ和GITHUB进行微服务管理。除此以外,该书还重点分析了OAuth统一认证服务的应用。

《名师讲坛:Java微服务架构实战(SpringBoot+SpringCloud+Docker+RabbitMQ)》适用于从事Java开发且有架构与项目重构需求的读者,也适用于相关技术爱好者,同时也可作为应用型高等院校及培训机构的学习教材。

2.《项目驱动零起点学Java》

购买链接:https://item.jd.com/13607758.html

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

作者是国内知名Java教学者和传播者,一路披荆斩棘,兢兢业业20余年。积累了丰富的“培”“训”经验,也产出了很多优质的教学理论。

Java语言经过数十年的发展,体系逐渐变得庞大而复杂,本书芟繁就简,提炼出了最为重要的知识点,可以让读者轻松上手。本书配套有专栏课程,课程中提供了扩展内容。

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

3.《Java编程讲义》

购买链接:https://item.jd.com/13495830.html

《Java编程讲义》根据目前Java开发领域的实际需求,从初学者角度出发,详细讲解了Java技术的基础知识。

全书共15章,包括Java开发入门,Java语言基础,Java控制结构,数组,面向对象编程,继承和多态,抽象类、接口和内部类,异常处理,Java常用类库,集合与泛型,Lambda表达式,输入-输出流,多线程,JDBC数据库技术,网络编程等内容。内容全面覆盖.1ava开发必备的基础知识点,结合生活化案例展开讲解,程序代码给出了详细的注释,能够使初学者轻松领会Java技术精髓,快速掌握Java开发技能。

《Java编程讲义》适合作为高等院校相关专业的教材及教学参考书,也适合作为Java开发入门者的自学用书,还可供开发人员查阅、参考。

精彩回顾

通过自学成为开发者的 9 种方法

怎么做一个有产品意识的软件工程师?

深入理解Docker网络通信原理

扫码关注《Java学研大本营》,加入读者群,分享更多精彩

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到