Category:

Kotlin+Ktorで技術要素を試しながらクリーンアーキテクチャでAPIサーバ構築

サーバサイドKotlinといえばSpring Bootを採用することが多いと思います。 個人的にはSpring Bootは、Auto Configurationのブラックボックス感が辛くて、もっとシンプルなフレームワークに乗り換えたいという思いが常々ありました。 JetBrains社製のWebフレームワークであるKtorが、2018年11月にv1.0.0がリリースされ、2020年4月現在v1.3.2まで順調にアップデートされ続けており、そろそろ本格的に利用しても良さそうな気配を感じています。 この記事では、Kotlin+KtorでREST APIの作成に必要な技術要素をStep By Stepで検証してみながら、クリーンアーキテクチャなAPIサーバを構築してみたいと思います。 最初の画面を表示 Ktor Pluginを使う方法だと良く設定内容を理解せずに使ってしまうことになりそうですし、D Continue Reading

Posted On :
Category:

Ktorで構築したAPIサーバのGoogle OAuth認証処理の全体像

最初は、KtorでAPIサーバを作るにあたり、公式ページ を参考にバックエンドでGoogle OAuth認証を行う実装を行なった。 しかし、フロントエンドからAPIを呼び出した際に、 フロントエンド => バックエンド => (redirect) => account.google.com の様な流れで、CORSエラーが発生することが分かった(詳細はこちら)。 リバースプロキシでフロントエンドとバックエンドのドメインを統一してみてもうまく解決できず、結局公式で紹介されているGoogle OAuth認証は諦め、自前で認証処理を実装することにした。 処理の流れ フロントエンド側の実装 package.json vue-google-oauth2の依存関係を追加する。 "dependencies": { "vue-google-oauth2&quo Continue Reading

Posted On :
Category:

KtorでLocationsのPOST使う際の注意点

Ktor で Locations を使う際、普通にForm DataとしてPOSTすると404エラーになってしまう。 GET parametersの項 を参照すると、サポート対象の機能のはずなのに。 ちなみに、 Issue #601 もあがっているが、半年以上放置されている。自分もコメントを追加しておいた。 ここでは残念な方法ではあるが、いくつか回避策があるので、その方法を記載しておく。 エラーになるパターン このケースのように、Form Dataとしてパラメータを受け取ろうとすると、404エラーになってしまう。 @Location("/hoge") data class HogeParamater(val param1, val param2) routing { post<HogeParamater> { param -> // HogeParam Continue Reading

Posted On :

Google OAuth 認証の実装サンプル

Kotlin / Ktorでサンプルプログラムを書いていて、Google OAuth認証を実装したのだが、だいたい実装完了したタイミングで、 公式ページ を発見してしまい、このコードはお蔵入りになることが決定した(涙)。 サーバサイド含めて1日ぐらい格闘していたので、ただ捨てるのも忍びなくここに記載しておく。 シーケンス図 上記のシーケンス図の通り実装したが、全部書くのも大変なので、以下の2点だけ記載しようと思う。 ApplicationからGoogle Serversに対して認証済みかどうかを確認する処理 AuthRedirect画面の実装 Google APIsでOAuth 認証用のプロジェクトを作成 プロジェクトを作成する https://console.developers.google.com にてプロジェクトを作成する。今回はKotlin Ktor Sampleという名前で作成 Continue Reading

Posted On :