
目次
この記事はこちらの記事の続きです。
Spring Boot + Azure App Engine +Cosmos DBでAPIを無料で爆速開発する - その1
こんにちは。karintomania(twitter)です。
前回はSpring bootで作ったプロジェクトをazureにデプロイするところまで行いました。
今回はCosmosDBに接続してAPIを完成させます。しかし、ロゴがダさい…
作るもの
改めて、成果物の確認です。
プログラマに刺さるような名言を教えてくれるAPIを作成します。
イメージはこんな感じです。

CosmosDBに接続する
まずはcosmos DBをazureポータルから作ります。
ホーム>新規作成>CosmosDBで作成してください。

APIは**Core(SQL)**を選んでください。
他は適当で大丈夫です。
次にDBとコンテナを作ります。
データエクスプローラー画面から作れると思います。
コンテナというのはRDBでいうテーブルです。
コンテナの作成画面はこんな感じです。

コンテナidをquoteとしました。

パーティションキーというのが必須項目ですね。
これは普通にPrimaryキーとして使うidとは、また別みたいです。
本来DBをリージョンごとで割りたいとか、
高度なことができるらしいのですが、今回は良く分からないので(爆)、
とりあえずquoteIdとしてidと同じ値を入れておくようにします。
余談ですが、この辺の高度な感じがCosmosDBを名乗る由来で、
宇宙レベルのアプリが作成できるとかなんとか。
これでCosmos側の設定は完了です。
Spring bootの設定
それではSpring boot側での設定をしていきます。
pom.xmlの編集
pomにdependencyを追加します。
1 | <dependency> |
application.properties
application.propertiesを編集して、
CosmosDBの情報を設定します。
これらの情報はAzureポータルでDBのページから見ることができます。
設定>キーってところです。
このキーはプライマリーキーを使ってください。
1 | # Specify the DNS URI of your Azure Cosmos DB. |
実装
それでは、DBに名言を追加・取得するような実装をしていきます。
と言っても大した事はする必要がなく、
SpringのCRUD Repositoryを継承したRepositoryを作ると、
基本的なメソッドは実装する必要なく呼び出せてしまいます。
大変便利ですね。
Entity
名言を格納するクラス、Quoteを作成します。
ここで大事なのはDocumentアノテーションでCollection名を指定する事ですね。@Document(collection = "quote")
また、PartitionKeyにもアノテーションをつけています。
Getter ,Setterとかがめんどくさいので、Lombokの@Data
アノテーションを使用しています。
1 | import com.microsoft.azure.spring.data.cosmosdb.core.mapping.Document; |
Repository作る
RepositoryにはCosmosRepositoryを継承したinterfaceを作ります。
1 |
|
Cotroller作る
PostでRepositoryのsave()
メソッド、
GetでfindById()
メソッドを使用しています。
(Getで3をベタうちしているのは見逃してください…)
1 |
|
ローカルでのテスト
それでは以下のコマンドでまずはローカルから動作確認します。mvn spring-boot:run
まずはPOSTです
JSONにQuoteの内容を入れてPOSTします。登録された場合、そのQuoteがそのまま返ってきます。

無事に登録されたようです。
登録されたデータはazure上のデータエクスプローラから確認できます。

あと2件はWEBポータル上でGUIから登録てみます。
JSONを貼り付けてSaveを押すだけで登録されます。

_ridなどのアンダーバーから始まるカラムは自動で生成されます。

簡単ですね。
今回はこの3つを登録してみました。
1 | { |
それではGETで名言を取得してみましょう。
こんな感じでランダムに一つQuoteが返ってきます。

デプロイ
それではこのAPIをデプロイしてみましょう。
デプロイはmvn clean package && mvn azure-webapp:deploy
です。
GETを飛ばしてみます
返ってきました。

これでいつでもどこでも先人の名言に触れることができます。
全く意味がないですが、嬉しかったので、GIFにしてみました。

最後に
いかがだったでしょうか。
このように簡単にAPIが作れるので個人開発が捗りそうですね。
これを参考にSpring boot界隈が盛り上がったら良いなと思っています。
参考
この記事を書くにあたって、以下を参考にしました。
Azure公式のSpring Boot関連記事
https://docs.microsoft.com/ja-jp/azure/developer/java/spring-framework/deploy-spring-boot-java-app-with-maven-plugin
Azure公式のCosmos DB記事
https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-cosmos-db
それでは今日はこの辺で。
PR
あなたの会社はあなたの技術を評価してくれていますか?
技術力を高めようと頑張っているのに、
技術が評価されないような会社にいたらそれは良い環境なのでしょうか?
エンジニアとして技術を高めたいのなら環境を選ぶことも大事です。
レバテックキャリア
エンジニアとして働いていて実務経験があるなら、
求人数の充実具合からレバテックキャリアがおすすめです。
IT転職ではデファクト・スタンダードですね。
▼レバテック キャリア 登録はこちら▼
Tech Clips
Tech Clipsは年収500万以上&自社サービスを持った会社に特化した求人サイトです。
首都圏限定になってはしまいますが、
収入を増やしたい、自社サービスを持った企業への転職をしたい人におすすめです。