FeignClient服务调用案例

2024-05-28 00:18

本文主要是介绍FeignClient服务调用案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

FeignClient服务调用案例,由A服务调用B服务,分别展示了get和post调用的各种传参方式。

A服务

  • A服务FeignClient调用服务类FeignDemoService
package com.github.third.feign;import com.github.common.util.Response;
import com.github.third.feign.fallback.FeignDemoServiceImpl;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;import java.util.Map;/*** @Project:collection* @Package:com.github.third.feign* @Date:2019/3/22 17:30* @Author:songfayuan* @Address: * @Description: FeignClient服务调用案例* @Modified By:*/
@FeignClient(name = "upms-service", fallback = FeignDemoServiceImpl.class)
public interface FeignDemoService {/*** feign get 请求<单个参数请求>* @param params* @return*/@GetMapping("/demo/noAuthorization/feignGetRequest1")Response feignGetRequest1(@RequestParam("params") String params);/*** feign get 请求<多参数请求>* @param params1* @param params2* @return*/@GetMapping("/demo/noAuthorization/feignGetRequest")Response feignGetRequest(@RequestParam("params1") String params1, @RequestParam("params2") String params2);/*** feign get 请求<单个参数请求>* @return* @author songfayuan* @date 2019/03/25 11:19*/@GetMapping("/demo/noAuthorization/feignGetRequest3/{params}")Response feignGetRequest3(@PathVariable("params") String params);/*** feign post 请求<单参、多参数请求>* @return*/@PostMapping("/demo/noAuthorization/feignPostRequest")Response feignPostRequest(@RequestBody Map<String, Object> params);/*** feign post 请求<单参数请求>* @param params* @return*/@PostMapping("/demo/noAuthorization/feignPostRequest2")Response feignPostRequest2(@RequestParam("params") String params);
}
  • 异常回调类 FeignDemoServiceImpl
package com.github.third.feign.fallback;import com.github.common.util.Response;
import com.github.third.feign.FeignDemoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;import java.util.Map;/*** @Project:collection* @Package:com.github.third.feign.fallback* @Date:2019/3/22 17:30* @Author:songfayuan* @Address: * @Description: FeignClient服务调用案例失败回调* @Modified By:*/
@Slf4j
@Service
public class FeignDemoServiceImpl implements FeignDemoService {@Overridepublic Response feignGetRequest1(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest1");return null;}@Overridepublic Response feignGetRequest(String params1, String params2) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest");return null;}@Overridepublic Response feignGetRequest3(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest3");return null;}@Overridepublic Response feignPostRequest(Map<String, Object> params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest");return null;}@Overridepublic Response feignPostRequest2(String params) {log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest2");return null;}
}

B服务

  • 具体业务功能DemoController
package com.github.admin.controller.demo;import com.github.common.util.Response;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.support.atomic.RedisAtomicInteger;
import org.springframework.web.bind.annotation.*;import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;/*** 描述:demo* @author songfayuan* 2017年8月31日下午2:07:19*/
@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {/*** feign get 请求<单个参数请求>* @param params* @return* @author songfayuan* @date 2019/03/22 18:29*/@GetMapping("/noAuthorization/feignGetRequest1")public Response feignGetRequest1(@RequestParam("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign get 请求<多参数请求>* @param params1* @param params2* @return* @author songfayuan* @date 2019/03/22 18:29*/@GetMapping("/noAuthorization/feignGetRequest")public Response feignGetRequest(@RequestParam("params1") String params1, @RequestParam("params2") String params2){log.info("请求参数params1 = {}, params2 = {}", params1, params2);return Response.success(params1 + "&" + params2);}/*** feign get 请求<单个参数请求>* @return* @author songfayuan* @date 2019/03/25 11:19*/@GetMapping("/noAuthorization/feignGetRequest3/{params}")public Response feignGetRequest3(@PathVariable("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign post 请求<单参、多参数请求>* @param params* @return* @author songfayuan* @date 2019/03/22 18:29*/@PostMapping("/noAuthorization/feignPostRequest")public Response feignPostRequest(@RequestBody Map<String, Object> params){log.info("请求参数params = {}", params);return Response.success(params);}/*** feign post 请求<单参数请求>* @param params* @return* @author songfayuan* @date 2019/03/25 11:00*/@PostMapping("/noAuthorization/feignPostRequest2")public Response feignPostRequest2(@RequestParam("params") String params){log.info("请求参数params = {}", params);return Response.success(params);}}
  • 文中用到的Response类
package com.github.common.util;import com.fasterxml.jackson.annotation.JsonInclude;import java.io.Serializable;/*** 响应信息主体** @param <T>* @author songfayuan*/
//@JsonInclude(JsonInclude.Include.NON_NULL)
public class Response<T> implements Serializable {private static final long serialVersionUID = 1L;private static final int SUCCESS_CODE = 200;private static final String SUCCESS_MSG = "success";private static final int ERROR_CODE = 500;private static final String ERROR_MSG = "服务器内部异常,请联系技术人员"; //将error改成了内容信息public static final int NO_LOGIN = -1;public static final int SUCCESS = 200;public static final int FAIL = 500;public static final int NO_PERMISSION = 2;private String msg = "success";private int code = SUCCESS;private T data;public Response() {super();}public Response(T data) {super();this.data = data;}public Response(T data, String msg) {super();this.data = data;this.msg = msg;}public Response(int code, T data, String msg) {super();this.code = code;this.data = data;this.msg = msg;}public Response(int code, String msg) {super();this.code = code;this.msg = msg;}public Response(Throwable e) {super();this.msg = e.getMessage();this.code = FAIL;}public static Response success() {Response resp = new Response();resp.code = (SUCCESS_CODE);resp.msg = (SUCCESS_MSG);return resp;}public static Response successResponse(String msg) {Response resp = new Response();resp.code = SUCCESS_CODE;resp.msg = msg;return resp;}public static Response error() {Response resp = new Response();resp.code = (ERROR_CODE);resp.msg = (ERROR_MSG);return resp;}public static Response errorResponse(String msg) {Response resp = new Response();resp.code = ERROR_CODE;resp.msg = msg;return resp;}public static Response response(int code, String msg) {Response resp = new Response();resp.code = (code);resp.msg = (msg);return resp;}public static Response response(int code, String msg, Object data) {Response resp = new Response();resp.code = (code);resp.msg = (msg);resp.data = data;return resp;}public static Response success(Object data) {Response resp = new Response();resp.code = (SUCCESS_CODE);resp.msg = (SUCCESS_MSG);resp.data = data;return resp;}public static Response error(Object data) {Response resp = new Response();resp.code = (ERROR_CODE);resp.msg = (ERROR_MSG);resp.data = data;return resp;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}

这篇关于FeignClient服务调用案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1009000

相关文章

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js