微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用OpenFeign+Validator优雅对接第三方接口

例如对接百度的根据ip查询地理信息的接口

这里使用的是OpenFeign

import com.xxx.xxx.thirdparty.dto.baidu.BaiduIpInfoDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@FeignClient(name = "baiduapiclient", url = "https://api.map.baidu.com")
public interface Baiduapiclient {

    // baidu access token 使用el表达式填入
    @GetMapping("/location/ip?ak=${baidu.map.ak}&coor=bd09ll")
    BaiduIpInfoDTO locationIp(@RequestParam("ip") String ip);
}
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;


@Data
public class BaiduIpInfoDTO {

    private String address;

    private Content content;

    @NotNull
    @Range(max = 0)
    private Integer status;

    @Data
    public static class AddressDetail {

     
        private String adcode;

        private String city;

        @JsonProperty("city_code")
        private Integer cityCode;

        private String district;

        private String province;

        private String street;

        @JsonProperty("street_number")
        private String streetNumber;
    }

    @Data
    public static class Point {
        private String x;

        private String y;
    }

    @Data
    public static class Content {
        private String address;
        @JsonProperty("address_detail")
        private AddressDetail addressDetail;
        private Point point;
    }
}
public class BaiduRest {

    @Autowired
    Baiduapiclient baiduapiclient;

    @Override
    public FeignResponse getIpInfo(String ipAddress) {
        BaiduIpInfoDTO dto = baiduapiclient.locationIp(ipAddress);
        // 通过校验字段信息判断是否查询成功 Baiduapiclient也可以配置Fallback
        return FluentValidatorUtils.checkBeanField(dto).isSuccess() ?
                FeignResponse.ok(dto) : FeignResponse.fail("查询失败");
    }
}

原文地址:https://cloud.tencent.com/developer/article/2136644

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐