注意書き
※【環境構築】ゼロから始めるElixir on Phoenix (2019)の続編となっております。興味のある方はぜひ上記のリンクからお願いします。
※2 私が命名したものがあります。命名したものはコマンドや予約語ではありません。ご自身で命名する際には下記表をご参照の上、置き換えてください。
命名 | 用途 |
---|---|
api | プロジェクト名 |
ローカルホスト | localhost:xxxx |
Data | モデル名 |
datas | テーブル名 (ルート名) |
url | カラム名 |
title | カラム名 |
artist | カラム名 |
① DBサーバが寝ている場合は起こす💤
sudo service postgresql start
筆者は忘れておりDBConnectionExcepcion
かましていました( ˘ω˘)
② モデル生成のコマンドを叩く
この記事を参考にしています。それからコマンド詳細が載っている記事は少し情報が古い(一部廃止されたコマンドやphxではなくphoenixがある)ですが、どんなことができるのかを掴むには良いイメージになるはずです。
mix phx.gen.json Accounts Data datas url:string title:string artist:string
形式はこんな感じのコマンドです。
mix phx.gen.○○○ Accounts モデル名 カラム名:データ型 カラム名:データ型 カラム名:データ型
今回のテーブル構造としては下記のとおりです。皆さんは好きなカラム名でつくってみましょう!
カラム名 | 型 | 用途 |
---|---|---|
url | 文字列型 | 曲の歌詞が載っているページに飛ぶリンク |
title | 文字列型 | 曲名 |
artist | 文字列型 | アーティスト名 |
※自動でidというカラムが生成されます。自動採番の主キーになります。
私のGitHubに挙げているこのデータを使おうと思います。これは以前、初音ミクWikiからスクレイピングで14時間かけて集めた曲一覧のデータです(急に個人的な趣味)。このデータを突っ込むのは手順⑩でやります。
③ ルーティング
router.ex
を下記のように設定します。(正直、編集の仕方がわからなかったので)ここを参考にしています。
defmodule ApiWeb.Router do
use ApiWeb, :router
pipeline :api do
plug :accepts, ["json"]
end
scope "/api", ApiWeb do
pipe_through :api
resources "/datas", DataController, except: [:new, :edit]
end
end
④ マイグレーションを実行
mix ecto.migrate
なんとこれだけでREST APIサーバの構築が完了しました。ここから先は実際に使ってみましょう。
※サーバ起動をここでしてください。前回の記事「サーバ、始動」で使ったコマンドです。
⑤ お詫び
※ホントはSEEDしたかったのですが、イマイチうまくいきませんでした。調べてきます。きっとそのうち更新されます。
⑥ Curlコマンドでデータを追加
コマンド末尾のURLはhttp://<ローカルホスト>/<プロジェクト名>/<モデル名>となります。
curl -X POST -H "Content-Type: application/json" -d '{"data": {"url":"test","title":"testTitle","artist":"testArtist"}}' http://ローカルホスト/api/datas
⑦ データを確認してみる
⑥で叩いたコマンドの末尾のURL(http://<ローカルホスト>/<プロジェクト名>/<モデル名>)でブラウザアクセスできます。画面に下記のような文字が出れば成功です。
{"data":[{"artist":"testArtist","id":1,"title":"testTitle","url":"test"}]}
⑧ Curlコマンドでデータを編集
curl -X PUT -H "Content-Type: application/json" -d '{"data": {"url":"a","title":"a","artist":"a"}}' http://<ローカルホスト>/api/datas/1
URLの末尾は編集したいデータのidの値を入れます。
再度⑦の手順でデータがすべてaになっていることを確認しましょう。
⑨データを削除してみる
最後にデータを削除してみましょう。
curl -X DELETE http://ローカルホスト/api/datas/1
再度ブラウザで確認して{"data":[]}
になっていれば成功です!
⑩ おまけ
https://github.com/k-horiuchi/curlCmd
ここのdata.sh
をRaw Viewでみると初音ミクWikiのデータがずらりと並んでいます。末尾のURLを変えてコマンド実行すれば全データが投入されます。
sudo bash data.sh
終わり
環境構築と比べると随分楽にREST APIサーバを構築できた気がしますね!Railsを触ったことはありませんが、Laravelと近いように感じるので、やはりRailsライクなのでしょう。
まだまだ下記のような話はできていませんので、そこはまたいずれ
- Elixirについて
- デプロイについて
- フレームワークについて