KotlinとKTORでビルドREST API
スタックオーバーフローsurvey 2020年から、Kotlinは最も愛されたプログラミング言語のうちの1つであるので、Jetbrains(Kotlinを開発する会社)が優れた仕事をしていると言うのは安全です.KotlinはAndroidアプリケーションを開発するための言語として最もよく知られていますが、RESTful APIなどのバックエンドサービスの開発に使用できます.JetbrainsもKTLINとRESTful APIを開発するために使用することができますKTORという名前のフレームワークを開発しており、あなたが想像できるように、それはかなり素晴らしいです.
休憩とは
RESTは、代表的な状態転送のために短いです、インターネット通信のためにアーキテクチャのデザインと発展を導くためにつくられたソフトウェア建築様式です.RESTは、Webのようなインターネットスケールシステムのアーキテクチャがどのように振る舞うべきかについての一連の制約を定義します.
ケーター
KTtorは、Kotlinプログラミング言語でJetbrainsによって作られるウェブフレームワークです.自分の言葉で
KTORフレームワークの主な目標は軽量で、独断的で、非同期で、安定していて、フレームワーク自体がどのような技術プロジェクトを使用しているかを課していないという意味です.
プラグイン
KTORは、その機能を拡張するプラグインの概念を使用します.プラグインは、シリアル化や圧縮などのアプリケーションロジックを拡張する一般的な機能のセットです.
例えば、KTORにおける典型的なリクエスト応答パイプライン
さて、KTORのプラグインを使用して、以前のリクエスト応答パイプラインを容易に拡張できるようになります.
あなたが要求応答パイプラインに加えるどのプラグインはあなたの好みとアプリケーションのニーズに依存します.認証が必要ですか?罰金、ちょうどプラグインをインストールします.例外処理?シリアル化?偉大な、単に簡単なプラグインのインストール.
プラグインは、プラグインとしてプラグインを使用するインストール関数を使用してサーバーの初期化フェーズ中に設定されます.プラグインをインストールするには
私の個人的な好みのプラグインのいくつかは以下の通りです. Status pages - 例外処理用 Serialization Serving static content CORS JWT 他のすべてのプラグインを使用して、頭をGenerate Ktor project ツール.
ビルドレストAPI
まず、KTORプロジェクトを作成する必要があります.つの方法を作成するにはGenerate Ktor project ツールまたはあなたが好むならばKtor plugin Intellijアイデア.
プロジェクトが作成されると、すでにKTOR自体に必要なすべての依存関係が追加されている必要がありますが、シリアル化にはもう一つ必要です.
依存:
ルーティング.KT
アプリケーション.KT
結論
読んでいただきありがとうございます、そして、私はこの記事があなたに役に立つことを望みます!結論として、この記事はKTORフレームワーク、それへの導入とKTORとKotlinを使用して簡単なREST APIを構築する方法を行った.あなたがKtorに興味があるならばKtor documentation より徹底的なガイドと説明のために.
あなたが私の内容が好きで、それが役に立つとわかるならば、私に続くことを考慮してください.あなたが寛大であるならば、考えてくださいbuying me a coffee .
私と接続してください.
休憩とは
RESTは、代表的な状態転送のために短いです、インターネット通信のためにアーキテクチャのデザインと発展を導くためにつくられたソフトウェア建築様式です.RESTは、Webのようなインターネットスケールシステムのアーキテクチャがどのように振る舞うべきかについての一連の制約を定義します.
A Web API (or Web Service) conforming to the REST architectural style is a REST API.
ケーター
KTtorは、Kotlinプログラミング言語でJetbrainsによって作られるウェブフレームワークです.自分の言葉で
Ktor is a framework to easily build connected applications – web applications, HTTP services, mobile and browser applications. Modern connected applications need to be asynchronous to provide the best experience to users, and Kotlin coroutines provide awesome facilities to do it in an easy and straightforward way.
KTORフレームワークの主な目標は軽量で、独断的で、非同期で、安定していて、フレームワーク自体がどのような技術プロジェクトを使用しているかを課していないという意味です.
プラグイン
KTORは、その機能を拡張するプラグインの概念を使用します.プラグインは、シリアル化や圧縮などのアプリケーションロジックを拡張する一般的な機能のセットです.
例えば、KTORにおける典型的なリクエスト応答パイプライン
さて、KTORのプラグインを使用して、以前のリクエスト応答パイプラインを容易に拡張できるようになります.
あなたが要求応答パイプラインに加えるどのプラグインはあなたの好みとアプリケーションのニーズに依存します.認証が必要ですか?罰金、ちょうどプラグインをインストールします.例外処理?シリアル化?偉大な、単に簡単なプラグインのインストール.
プラグインは、プラグインとしてプラグインを使用するインストール関数を使用してサーバーの初期化フェーズ中に設定されます.プラグインをインストールするには
embeddedServer
コール.import io.ktor.features.*
fun main() {
embeddedServer(Netty, port = 8080) {
install(CORS)
install(Compression)
// ...
}.start(wait = true)
}
または望ましいモジュールimport io.ktor.features.*
fun Application.module() {
install(CORS)
install(Compression)
// ...
}
デフォルトでは、KTORはどんなプラグインも起動しません、そして、彼らのアプリケーションが必要とする機能をインストールするのは、開発者次第です.私の個人的な好みのプラグインのいくつかは以下の通りです.
ビルドレストAPI
まず、KTORプロジェクトを作成する必要があります.つの方法を作成するにはGenerate Ktor project ツールまたはあなたが好むならばKtor plugin Intellijアイデア.
プロジェクトが作成されると、すでにKTOR自体に必要なすべての依存関係が追加されている必要がありますが、シリアル化にはもう一つ必要です.
依存:
dependencies {
implementation("io.ktor:ktor-server-core:$ktor_version")
implementation("io.ktor:ktor-server-netty:$ktor_version")
implementation("ch.qos.logback:logback-classic:$logback_version")
implementation("io.ktor:ktor-serialization:$ktor_version")
testImplementation("io.ktor:ktor-server-tests:$ktor_version")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
}
それをシンプルにしてみましょうCustomer
クラス.Kotlinのデータクラスとkotlinx.serialization
クラスをJSONにシリアル化し、POST
メソッド.我々はそれを簡単に維持されているので、アプリケーションは、メモリのストレージで使用されます.実際のアプリケーションの場合は、データベースを使用します.import kotlinx.serialization.Serializable
val customerStorage = mutableListOf<Customer>()
@Serializable
data class Customer(val id: String, val firstName: String, val lastName: String, val email: String)
次のステップはルートを定義することです.私たちはGET
, POST
, and DELETE
リクエスト/customer
エンドポイント.このように、我々のルートを対応するHTTPメソッドで定義しましょう.新しいファイルルーティングを加えましょう.ルーティング.KT
fun Application.customerRouting() {
routing {
route("/customer") {
get {
if (customerStorage.isNotEmpty()) {
call.respond(customerStorage)
} else {
call.respondText("No customers found", status = HttpStatusCode.NotFound)
}
}
get("{id}") {
val id = call.parameters["id"] ?: return@get call.respondText(
"Missing or malformed id",
status = HttpStatusCode.BadRequest
)
val customer =
customerStorage.find { it.id == id } ?: return@get call.respondText(
"No customer with id $id",
status = HttpStatusCode.NotFound
)
call.respond(customer)
}
post {
val customer = call.receive<Customer>()
customerStorage.add(customer)
call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
}
delete("{id}") {
val id = call.parameters["id"] ?: return@delete call.respond(HttpStatusCode.BadRequest)
if (customerStorage.removeIf { it.id == id }) {
call.respondText("Customer removed correctly", status = HttpStatusCode.Accepted)
} else {
call.respondText("Not Found", status = HttpStatusCode.NotFound)
}
}
}
}
}
最後のステップは、以前に定義されたルートを登録して、インストールすることですContentNegotiation
KTORがシリアル化を処理できるようにプラグイン.アプリケーション.KT
fun main(args: Array<String>): Unit =
io.ktor.server.netty.EngineMain.main(args)
fun Application.module() {
install(ContentNegotiation) {
json()
}
customerRouting()
}
偉大な、我々の単純な残りのAPIを使用して、それらの甘い顧客を処理する準備ができてCRUD
操作):)結論
読んでいただきありがとうございます、そして、私はこの記事があなたに役に立つことを望みます!結論として、この記事はKTORフレームワーク、それへの導入とKTORとKotlinを使用して簡単なREST APIを構築する方法を行った.あなたがKtorに興味があるならばKtor documentation より徹底的なガイドと説明のために.
あなたが私の内容が好きで、それが役に立つとわかるならば、私に続くことを考慮してください.あなたが寛大であるならば、考えてくださいbuying me a coffee .
私と接続してください.
Reference
この問題について(KotlinとKTORでビルドREST API), 我々は、より多くの情報をここで見つけました https://dev.to/kfurjan/build-rest-api-with-kotlin-and-ktor-15aaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol