背景

之前一直学习kotlin时没有自己写过后端,而最近的一个作业要写一个简单的聊天软件,就需要写纯websockt的后端,那么我就开始在网上搜索,找ai问。最后找到了ktor这个后端框架——它对于我最大的好处估计就是它是完全由kotlin语言编写的,跟我学习的内容联系密切,比较容易上手。便看起了官方文档。

学习流程

其实说来也很简单,这种大型的开源项目都有专门的官方文档供你学习,直接谷歌搜索ktor文档即可(需要魔法)

而且一般在github上都上传了专门编写的示例代码

拉下来在Android studio打开就可以看基本实现。其实就是这样一步步照着做,中间有不会的就去查教程,问ai。一般都能解决。

学习成果

总结一下学到现在的一些成果。

首先ktor框架有俩种创建服务器的方式一种是embeddserver()

这是一段简单的创建服务器的代码

fun runBasicServer() {
    embeddedServer(Netty, port = 8080) {
        routing {
            get("/") {
                call.respondText("Hello, world!")
            }
        }
    }.start(wait = true)
}

详细解释一下,这个方法有俩个参数,第一个参数是引擎(engine),这里使用的是netty引擎,引擎是运行ktor服务器程序的前提

第二个参数是端口,默认是8080,但是不建议实际使用时设置这个端口,可以自己设置一个,鼠鼠用的是8480

第二种创建服务器的方式就是engine-main,相比于embeddserver初始化较复杂,但是更加模块化,对于较大的项目一般用engine-main比较好,鼠鼠自己就是用的这种方式,这是鼠鼠自己的代码

fun main(args: Array<String>) {


    Database.connect("jdbc:h2:./myh2file", driver = "org.h2.Driver")
    // 一次性创建所有表
    transaction {
        SchemaUtils.create(Messages,Users,Friendships)
    }
    EngineMain.main(args)
}

fun Application.module() {

    configureJwt()
    configureSockets()
    configureSerialization()
    configureRouting()
}

逐一解释一下,首先transaction内是创建表(数据库操作),EngineMain.main(args)就是启动服务器的方法,.module()方法就是一系列的配置,这里用到了扩展函数,例如

fun Application.configureSerialization() {
    install(ContentNegotiation) {
        json(Json {
            prettyPrint = true
            isLenient = true
        })
    }
}

你肯定想问那端口设置在哪里呢,相比于embeddserver(),这个方法还有专门的配置文件:application.yaml

ktor:
    application:
        modules:
            - com.example.ApplicationKt.module
    deployment:
        port: 8480
        host: "0.0.0.0"

 在这里就可以设置端口,主机,还有模块。

基本的创建完成后就是要写请求了。HTTP协议的请求方法有GET,POST,PUT,DELET,PATCH,在ktor框架中就是它们的小写。

非常简单

fun Application.configureRouting() {

    //连接数据库

    routing {

        // 在主路由中添加
        post("/register") {
          
        }
}

在里面就可以处理请求的逻辑

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐