Android自学第十四天:初探Ktor框架(新手自学流程)
之前一直学习kotlin时没有自己写过后端,而最近的一个作业要写一个简单的聊天软件,就需要写纯websockt的后端,那么我就开始在网上搜索,找ai问。最后找到了ktor这个后端框架——它对于我最大的好处估计就是它是完全由kotlin语言编写的,跟我学习的内容联系密切,比较容易上手。便看起了官方文档。
背景
之前一直学习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") {
}
}
在里面就可以处理请求的逻辑
更多推荐
所有评论(0)