Feign服务端接口

1. Feign服务端接口代码

import com.xxx.gsc.tech.framework.usf.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * USF相关的API
 *
 * @author yyy
 */
@FeignClient(name = "${feign-api.usf.name:DSPF--admin}", url = "${feign-api.usf.url:http://zuul-tst.lmp-sy.xpaas.xxx.com/dspf/admin}")
public interface USFFeignService {

    /**
     * 登录
     *
     * @param loginFormParamVo
     * @return
     */
    @PostMapping(value = "/user/login", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<LoginResultVo> login(@RequestBody LoginFormParamVo loginFormParamVo);

    /**
     * ADFS登录
     *
     * @param returnTo
     * @return
     */
    @GetMapping(value = "/user/adfsindex", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    String loginADFS(@RequestParam("returnTo") String returnTo);

    /**
     * 根据token查询用户信息
     *
     * @return
     */
    @Deprecated
    @GetMapping(value = "/sys/user/token", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<UserInfoResultVo> token(@RequestHeader(value = "token") String token);


    /**
     * 根据token查询用户信息
     *
     * @return
     */
    @GetMapping(value = "/sys/user/token", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<UserInfoResultVo> getUserByToken(@RequestHeader(value = "token") String token);

    /**
     * 登出
     *
     * @param token
     * @return
     */
    @PostMapping(value = "/user/logout", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse logout(@RequestHeader(value = "token") String token);


    /**
     * ADFS登出
     *
     * @param returnTo
     * @return
     */
    @PostMapping(value = "/user/adfs/sls", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    String logoutADFS(@RequestParam("returnTo") String returnTo);

    /**
     * 查询租户列表
     *
     * @return
     */
    @PostMapping(value = "/sys/tenant/user/list", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<List<TenantResultVo>> getTenantList(@RequestHeader(value = "token") String token);

    /**
     * 选择租户
     *
     * @return
     */
    @PutMapping(value = "/sys/user/tenant", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse tenant(@RequestBody TenantParamVo tenant, @RequestHeader(value = "token") String token);

    /**
     * 获取当前用户在当前系统下的菜单tree
     *
     * @return
     */
    @PostMapping(value = "/sys/menu/tree", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<List<MenuResultVo>> getMenu(@RequestHeader(value = "token") String token);

    /**
     * 获取当前用户在当前系统下的菜单tree
     *
     * @return
     */
    @PostMapping(value = "/sys/group/usertenantgroup", headers = {"SERVICE-AUTHENTICATION=${feign-api.usf.token}"})
    USFResponse<List<UserGroupResultVo>> getUserGroup(@RequestHeader(value = "token") String token);

    /**
     * 这边采取了和Spring Cloud官方文档相同的做法,将fallback类作为内部类放入Feign的接口中,当然也可以单独写一个fallback类。
     */
    @Slf4j
    @Component
    class USFFeignServiceFallback implements USFFeignService {

        @Override
        public USFResponse<LoginResultVo> login(LoginFormParamVo loginFormParamVo) {
            return null;
        }

        @Override
        public String loginADFS(String returnTo) {
            return null;
        }

        @Override
        public USFResponse<UserInfoResultVo> token(String token) {
            return null;
        }

        @Override
        public USFResponse<UserInfoResultVo> getUserByToken(String token) {
            return null;
        }

        @Override
        public USFResponse logout(String token) {
            return null;
        }

        @Override
        public String logoutADFS(String returnTo) {
            return null;
        }

        @Override
        public USFResponse<List<TenantResultVo>> getTenantList(String token) {
            return null;
        }

        @Override
        public USFResponse tenant(TenantParamVo tenant, String token) {
            return null;
        }

        @Override
        public USFResponse<List<MenuResultVo>> getMenu(String token) {
            return null;
        }

        @Override
        public USFResponse<List<UserGroupResultVo>> getUserGroup(String token) {
            return null;
        }
    }
}

2. Feign消费端yml配置

feign-api:
  usf:
    name: DSPF--ADMIN
    url: http://zuul-yyy
    token: yyy
    tenantId: 342

3.消费端代码

@Api(tags = "登录")
@RestController
@RequestMapping("/login")
public class LoginController extends BaseController {
    @Autowired
    private CommonUSFFeignService commonUSFFeignService;

    /************************ ADFS 登录 ******************************/
    @ApiOperation(value = "获取ADFS登录URL")
    @PostMapping(value = "/loginADFS")
    public Message loginADFS(String returnTo) {
        if (returnTo == null) {
            return sendFailureMessage("returnTo is not null");
        }
        return sendSuccessMessage(commonUSFFeignService.loginADFS(returnTo));
    }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Feign是一个声明式的Web服务客户端,可以通过简单的注解和接口定义来调用REST接口。在服务端,我们可以通过以下步骤来编写Feign客户端: 1. 引入Feign依赖 在Maven项目中,我们需要在pom.xml文件中引入Feign依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ``` 2. 创建Feign接口服务端,我们需要创建一个Feign接口,用于定义调用外部服务的方法。例如: ``` @FeignClient(name = "example-service") public interface ExampleFeignClient { @GetMapping("/example") String getExample(); } ``` 在上面的代码中,@FeignClient注解用于指定调用的服务名,@GetMapping注解用于指定调用的接口路径,方法返回值为调用结果。 3. 注册Feign接口服务端,我们需要将Feign接口注册到Spring容器中,例如: ``` @Configuration public class FeignConfig { @Bean public ExampleFeignClient exampleFeignClient() { return Feign.builder() .client(new OkHttpClient()) .encoder(new JacksonEncoder()) .decoder(new JacksonDecoder()) .target(ExampleFeignClient.class, "http://example-service"); } } ``` 在上面的代码中,我们创建了一个Feign配置类,将ExampleFeignClient接口注册到Spring容器中。使用Feign.builder()方法创建Feign客户端,并指定相应的编解码器和请求客户端,最后通过.target()方法指定调用的服务名和接口类型。 4. 调用外部服务 在服务端,我们可以通过注入Feign接口的方式来调用外部服务,例如: ``` @RestController public class ExampleController { @Autowired private ExampleFeignClient exampleFeignClient; @GetMapping("/example") public String getExample() { return exampleFeignClient.getExample(); } } ``` 在上面的代码中,我们通过@Autowired注解将ExampleFeignClient接口注入到ExampleController中,然后调用接口的getExample()方法来获取外部服务的响应结果。 以上就是在服务端编写Feign客户端的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值