Help us understand the problem. What is going on with this article?

【APIサーバ構築】ゼロから始めるElixir on Phoenix Ⅱ (2019)

注意書き

【環境構築】ゼロから始める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 を下記のように設定します。(正直、編集の仕方がわからなかったので)ここを参考にしています。

/プロジェクト名/lib/api_web/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ライクなのでしょう。
まだまだ下記のような話はできていませんので、そこはまたいずれ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした