# ktcloud
**Repository Path**: openaddr/ktcloud
## Basic Information
- **Project Name**: ktcloud
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-21
- **Last Updated**: 2023-11-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 简介
为运行在jvm上的应用,整合Nacos服务中心和Forest HTTP客户端,以实现服务注册、服务发现、服务间通信。
## 安装
Maven:
```xml
com.openaddr
kt-cloud
1.0.7
```
```xml
com.dtflys.forest
forest-spring-boot-starter
1.5.28
```
Gradle:
```kotlin
dependencies {
implementation("com.openaddr:kt-cloud:1.0.7")
}
```
```kotlin
//Springboot需要额外引入starter,非Springboot不需要此依赖
dependencies {
implementation("com.dtflys.forest:forest-spring-boot-starter:1.5.28<")
}
```
## 配置
配置文件可以为application.yml或application.yaml
#### 如果你的应用运行在独立环境中:
```yaml
nacos:
addr: ip:port(Nacos服务器地址)
app:
name: yourAppName
port: yourAppPort
host: ip/host(非必填,告诉Nacos,你的地址,默认为局域网地址)
```
#### 如果你的应用运行在SpringBoot&SpringCloud中:
```yaml
spring:
application:
name: yourAppName
cloud:
nacos:
discovery:
server-addr: ip:port(Nacos服务器地址)
server:
port: yourAppPort
```
#### 同样的,也兼容Ktor的部分配置
```yaml
ktor:
deployment:
port: yourAppPort
```
## 使用
### Java独立环境下:
#### 1.创建请求接口
```java
@ServiceName(serviceName = "微服务名称")
public interface HelloBili {
@Request() //可以继续写请求路径
String home();
}
```
#### 2.发送请求
```java
public class Hello {
public static void main(String[] args) {
HelloBili client = Forest.client(HelloBili.class); //创建请求代理
String res = client.home(); //发起请求
}
}
```
### Kotlin环境下:
在kotlin环境下,除了类似java的写法外,还有特殊的伴生对象支持,可以更方便的使用客户端:
#### 1.创建请求接口
```kotlin
@ServiceName("sso-server")
interface HelloBili {
companion object : Kiss() //请求客户端伴生对象,可以直接使用此对象
@Request("/test")
fun hello(): String
}
```
#### 2.发送请求
###### 第一种写法
```kotlin
val hello = HelloBili().hello() //使用伴生对象发送请求
```
###### 第二种写法
```kotlin
val client = Kiss.client() //创建客户端对象(注意,源码使用了内联方法,且jdk版本为17,请声明kotlin的jvm目标版本为17)
val hello = client.hello() //发送请求
```
### SpringBoot下:
#### 1.创建请求接口
```java
@ServiceName(serviceName = "微服务名称")
public interface HelloBili {
@Request
String home();
}
```
#### 2.发送请求
```java
@Component
public class Hello {
@Autowired
HelloBili client;
public void main() {
String res = client.home(); //发送请求
}
}
```
## 依赖警告
本项目依赖于一些三方,引入本项目自动引入以下依赖:
```xml
org.jetbrains.kotlin
kotlin-stdlib-jdk8
1.7.21
org.jetbrains.kotlin
kotlin-reflect
1.7.22
com.alibaba.nacos
nacos-client
2.2.0
com.dtflys.forest
forest-core
1.5.28
cn.hutool
hutool-all
5.8.11
javax.xml.bind
jaxb-api
2.3.0
com.sun.xml.bind
jaxb-impl
2.3.0
com.sun.xml.bind
jaxb-core
2.3.0
javax.activation
activation
1.1.1
```
## 详尽请求
发送请求完全依赖于Forest HTTP客户端,因此,强烈建议参考Forest文档
[Forest官方文档](https://forest.dtflyx.com/pages/1.5.x/build_interface/ "Forest文档" )