FeignClient服务调用案例,由A服务调用B服务,分别展示了get和post调用的各种传参方式。
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 params);
/**
* feign post 请求<单参数请求>
* @param params
* @return
*/
@PostMapping("/demo/noAuthorization/feignPostRequest2")
Response feignPostRequest2(@RequestParam("params") String params);
}
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 {
@Override
public Response feignGetRequest1(String params) {
log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest1");
return null;
}
@Override
public Response feignGetRequest(String params1, String params2) {
log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest");
return null;
}
@Override
public Response feignGetRequest3(String params) {
log.warn("调用{}异常...", "/demo/noAuthorization/feignGetRequest3");
return null;
}
@Override
public Response feignPostRequest(Map params) {
log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest");
return null;
}
@Override
public Response feignPostRequest2(String params) {
log.warn("调用{}异常...", "/demo/noAuthorization/feignPostRequest2");
return null;
}
}
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 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);
}
}
package com.github.common.util;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
/**
* 响应信息主体
*
* @param
* @author songfayuan
*/
//@JsonInclude(JsonInclude.Include.NON_NULL)
public class Response 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;
}
}