一、Forest介绍
Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求。
二、SpringBoot整合
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.5.0-RC6</version>
</dependency>
/**
* forest调用
*/
@Component
public interface MyClient {
@Request(url = "http://localhost:8080/api/hello")
String helloForest();
@Request(
url = "http://localhost:8080/api/user",
headers = "Accept: text/html"
)
String sendRequest(@Query("uname") String username);
}
@SpringBootApplication
@ForestScan(basePackages = "com.example.demo.rpc")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
package com.example.demo.controller;
import com.example.demo.rpc.MyClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("api")
public class HelloController {
final
MyClient myClient;
public HelloController(MyClient myClient) {
this.myClient = myClient;
}
@GetMapping("hello")
public String hello(){
return "hello";
}
@GetMapping("rest")
public String forest(){
return myClient.helloForest();
}
@GetMapping("user")
public String user(String uname){
return uname;
}F
@GetMapping("query")
public String query(){
return myClient.sendRequest("<h1>hello</h1>");
}
}
有点类型springcloud中的Feign。