#JAVA项目中java 股票交易接口api,接口调用怎么做?
上面是最常见的几种用法,我们今天要介绍的用法比上面的更简单,方便,它就是Feign
Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单。
Feign提供了HTTP请求的模板,通过编写简单的java 股票交易接口api,接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。
而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。
SpringCloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。
Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
当我们搭建好注册中心Eureka之后,就是需要将自己的服务注册到Eureka中,然后别的服务可以直接调用。
首先呢是服务提供方需要注册到Eureka中,这边我们新建一个房产服务fangjia-fsh-house-service
fangjia-fsh-house-service中提供跟房子相关的java 股票交易接口api,接口,比如最简单的获取房子的基本信息
/**
* 获取房产信息
* @param houseId 房产编号
* @return
*/
@GetMapping('/{houseId}')
public ResponseData hosueInfo(@PathVariable('houseId')Long houseId) {
return ResponseData.ok(houseService.getHouseInfo(houseId));
}
另外我们起一个项目来消费房产服务的这个java 股票交易接口api,接口,房产置换服务fangjia-fsh-substitution-service
/**
* 获取置换信息
* @param sid
* @return
*/
@GetMapping('/{sid}')
public ResponseData substitutionInfo(@PathVariable('sid') Long sid) {
return ResponseData.ok(substitutionService.getSubstitutionInfo(sid));
}
在substitutionService中需要消费房产服务的获取房产信息java 股票交易接口api,接口,一般的做法我们都会通过Httpclient或者最底层的Httpurlconnection来直接调用java 股票交易接口api,接口,当然这些都需要自己集成或者封装,在spring里面已经有了一个很好的封装,那就是RestTemplate来调用java 股票交易接口api,接口。
关于RestTemplate的使用可以查看我的这篇文章:http://cxytiandcom/blog/detail/6157
可以直接注入对象,然后调用java 股票交易接口api,接口,这种方式唯一的弊端就是你需要知道服务提供者的地址,根据指定的地址来进行调用
@Autowired
private RestTemplate restTemplate;
@Override
public SubstitutionDto getSubstitutionInfo(Long sid) {
House house = this.restTemplate.getForObject('http://localhost:8000/hosue/' + id, House.class);
// .......
}
另一种就是我们今天的主角,简单的调用方式就是使用一个声明式的REST客户端Feign来进行java 股票交易接口api,接口调用
用了Feign之后调用java 股票交易接口api,接口只需要定义相同的java 股票交易接口api,接口即可实现调用
使用Feign肯定要引入jar的依赖
org.springframework.cloud
spring-cloud-starter-feign
在启动类上加@EnableFeignClients注解,如果你的Feignjava 股票交易接口api,接口定义跟你的启动类不在一个包名下,还需要制定扫描的包名@EnableFeignClients(basePackages='cofangjiapclient')
这边建议大家将java 股票交易接口api,接口的消费定义,单独抽一个项目出来,后面打成公共的jar,这样无论是哪个项目需要调用java 股票交易接口api,接口,引入公共的java 股票交易接口api,接口SDKjar即可,不用重新定义一遍了。
**
* 房生活房产服务API调用客户端
*
* @author yinjihuan
* @create 2017-10-27 13:55
**/
@FeignClient(value = 'fangjia-fsh-house-service', path = '/house', configuration = FeignConfiguration.class, fallback = HouseRemoteClientHystrix.class)
public interface HouseRemoteClient {
/**
* 获取企业下某用户的有效房产信息
* @param eid 企业编号
* @param uid 用户编号
* @return
*/
@GetMapping('/list/{eid}/{uid}')
public HouseListDto hosueList(@PathVariable('eid')Long eid, @PathVariable('uid')String uid);
/**
* 获取房产详细信息
* @param houseId 房产编号
* @return
*/
@GetMapping('/{houseId}')
public HouseInfoDto hosueInfo(@PathVariable('houseId')Long houseId);
}
@FeignClient里的value表示你要消费哪个服务的java 股票交易接口api,接口,path就是统一的前缀,也就是我们HouseController中类上面的@RequestMapping('/house')的地址
@FeignClient里的configuration可以让你自定义配置信息来覆盖Feign的默认配置,比如配置日志输出
日志的输出还需要在配置文件中指定才能生效logginlevecofangjiapclient.fshousHouseRemoteClient=DEBUG
@Configuration
public class FeignConfiguration {
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
}
@FeignClient里的fallback可以让你的java 股票交易接口api,接口在熔断处理时,返回默认的值给调用方,这个一般有2种方式:
实现Feign的java 股票交易接口api,接口,实现所有的默认方法
/**
* 房产服务调用熔断默认返回处理
*
* @author yinjihuan
* @create 2017-10-29 14:30
**/
@Component
public class HouseRemoteClientHystrix implements HouseRemoteClient {
@Override
public HouseListDto hosueList(Long eid, String uid) {
return new HouseListDto();
}
@Override
public HouseInfoDto hosueInfo(Long houseId) {
return new HouseInfoDto();
}
}
另一种就是@FeignClient里的fallbackFactory,效果是一样的
使用的话更简单了,和普通的Service的类一样使用,注入进来,然后直接调用方法就相当于调用远程java 股票交易接口api,接口了
@Autowired
private HouseRemoteClient houseRemoteClient;
HouseInfoDto houseInfoDto = houseRemoteClient.hosueInfo(1L);
普通Java项目中如何使用Feign
通过上面的讲解,在SpringCloud中使用Feign显得那么的自然,因为集成这件事SpringCloud已经帮我们做好了,这是广大开发人员的福音。
那如果你们没有使用SpringCloud来进行开发,我能用Feign来调用java 股票交易接口api,接口马,答案是:当然
首先你需要看一遍文档,如果还不会用你来找我:https://githucom/OpenFeign/feign
我们看官方的提个Demo:
定义了一个GitHub的java 股票交易接口api,接口调用类,上面配置了请求方式以及参数,是通过Feign自带的注解方式配置的
然后通过Feigbuilder()构建一个客户端,同时可以设置编码,解码需要用到的类,以及访问的目标地址等等信息,当然也包括日志的设置,输出等等。。
interface GitHub {
@RequestLine('GET /repos/{owner}/{repo}/contributors')
List contributors(@Param('owner') String owner, @Param('repo') String repo);
}
static class Contributor {
String login;
int contributions;
}
public static void main(String... args) {
GitHub github = Feign.builder()
.decoder(new GsonDecoder())
.target(GitHub.class, 'https://api.github.com');
// Fetch and print a list of the contributors to this library.
List contributors = github.contributors('OpenFeign', 'feign');
for (Contributor contributor : contributors) {
System.out.println(contributor.login + ' (' + contributor.contributions + ')');
}
}
具体代码可以参考我的github:
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点