# easy-http
**Repository Path**: justlive1/easy-http
## Basic Information
- **Project Name**: easy-http
- **Description**: 轻松对接rest api
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2019-07-04
- **Last Updated**: 2024-03-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# easy-http
[](https://maven-badges.herokuapp.com/maven-central/vip.justlive/easy-http/)
[](https://www.apache.org/licenses/LICENSE-2.0.html)
easy to contact http rest api
## 介绍
- 基于Spring mvc`@RequestMapping`、`@GetMapping`、`@PostMapping`、`@RequestParam`、`RequestHeader`、`PathVariable`等注解扩展
- 自动扫描接口实例化并托管至Spring,参考自Mybatis自动扫描Mapper
- 需要声明的接口和Server端保持一致即可完美对接
## 快速开始
### 引入
创建`Maven`项目
```xml
vip.justlive
easy-http
${lastVersion}
```
或`Gradle`
```
compile 'vip.justlive:easy-http:$lastVersion'
```
### 使用方式
```java
// 创建接口
@HttpClient
@RequestMapping("https://api.github.com")
public interface GithubApi {
@RequestMapping(method = RequestMethod.GET)
String root();
@GetMapping("/repos/{owner}/{repo}")
Repository repos(@PathVariable String owner, @PathVariable String repo);
@Data
class Repository {
private Long id;
private String name;
private int forks;
private int watchers;
}
}
// 使用${xx}获取配置
@HttpClient
@RequestMapping("${thirdpart.api.url}")
public interface ThirdpartApi {
@PostMapping("/api/token")
RespVo token(@RequestParam String appKey, @RequestParam String appSecret);
@PostMapping("/api/account")
RespVo account(@RequestHeader String accessToken, @RequestBody Account account);
@Data
@Accessors(chain = true)
class AccessToken {
private String accessToken;
private Long expiresIn;
}
@Data
@Accessors(chain = true)
class Account {
private String name;
private BigDecimal balance;
}
}
// 增加扫描(默认为当前类所处包)
@HttpClientScan("com.xxx")
@Configuration
public class HttpClientAutoConfiguration {
}
// 使用
@Slf4j
@Component
public class Demo {
@Autowired
private GithubApi githubApi;
@Autowired
private ThirdpartApi thirdpartApi;
@PostConstruct
private void init() {
String result = githubApi.root();
log.info("githubApi root {}", result);
Repository repository = githubApi.repos("justlive1", "easy-http");
log.info("githubApi repos {}", repository);
AccessToken token = thirdpartApi.token("key", "secret").getData();
log.info("thirdpartApi token {}", token);
Account account = new Account().setName("aa").setBalance(new BigDecimal("12.3"));
account = thirdpartApi.account(token.getAccessToken(), account).getData();
log.info("thirdpartApi account {}", account);
}
}
```