30分钟内用Kotlin编写REST API:实战指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
```html

如何在30分钟内用Kotlin编写REST API:实战指南

Kotlin是一种现代编程语言,在后端开发中迅速流行起来。凭借简洁的语法、与Java的完全兼容性以及强大的工具(如Ktor框架),创建REST API变得快速而愉快。在本文中,我们将通过实践向您展示如何在半小时内用Kotlin编写一个简单但功能完整的REST API。您将学习如何配置项目、创建端点、处理JSON以及启动服务器。

本文面向熟悉Kotlin基础的开发者,但不需要深厚后端开发知识。所有代码都将附带详细解释。

1. 项目配置与依赖添加

首先,我们需要创建一个新的Kotlin项目。我们将使用Gradle——Kotlin最流行的构建系统。如果您使用IntelliJ IDEA,请选择“New Project” -> “Kotlin” -> “JVM | IDEA”。否则,请手动创建项目文件夹。

首先,打开build.gradle.kts文件,并添加以下用于Ktor和JSON序列化的依赖:

plugins {    kotlin("jvm") version "1.9.22"    kotlin("plugin.serialization") version "1.9.22"    application}

repositories { mavenCentral()}

dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-content-negotiation:2.3.7") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") implementation("ch.qos.logback:logback-classic:1.4.14")}

application { mainClass.set("ApplicationKt")}

同步Gradle后,我们就可以开始编写代码了。请注意,我们使用了kotlinx.serialization插件来处理JSON——这是Kotlin中的标准方式。

2. 创建数据模型与服务器主文件

对于REST API,我们需要一个数据模型。这里我们使用一个简单的待办事项列表(ToDo)。创建Todo.kt文件:

import kotlinx.serialization.Serializable

@Serializabledata class Todo( val id: Int, val title: String, val completed: Boolean = false)

现在创建主文件Application.kt(或Main.kt)。在其中配置并启动服务器:

import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.application.*import io.ktor.server.routing.*import io.ktor.server.response.*import io.ktor.server.request.*import io.ktor.serialization.kotlinx.json.*import io.ktor.server.plugins.contentnegotiation.*

fun main() { embeddedServer(Netty, port = 8080, host = "0.0.0.0") { configureSerialization() configureRouting() }.start(wait = true)}

fun Application.configureSerialization() { install(ContentNegotiation) { json() }}

fun Application.configureRouting() { routing { get("/") { call.respondText("Hello, REST API on Kotlin!") } }}

这段代码在8080端口启动服务器。我们引入了ContentNegotiation模块以实现JSON的自动序列化/反序列化。运行应用程序——您应该在浏览器中访问http://localhost:8080时看到欢迎消息。

3. 实现CRUD端点(创建、读取、更新、删除)

现在让我们添加完整的REST路由来管理任务。我们将使用mutableListOf列表在内存中存储数据(在实际项目中,您会将其替换为数据库)。

创建TodoRepository.kt文件:

import kotlinx.coroutines.sync.Muteximport kotlinx.coroutines.sync.withLock

class TodoRepositor ```

博客

书籍推荐