# 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文档" )