スマホアプリを作るために5分でWebAPIを作る方法を全力で超親切に解説する
WebAPIを使ってスマホアプリ作りたいなっと思っているそこの学生さん!
もしくは、仕事でAPIとスマホアプリの案件請けちゃったけど、俺やったことないんだよな…どうしよう…っと悩んでいるSIerの諸君!
このブログに出会えて幸運(笑)ですね♪全3回にわけて、中の人たくみが優しく丁寧かつ全力で解説します!
ここで私とのお約束です。コピペではなく、ちょっとめんどくさくても必ず手でタイプしてください。
かならずやあなたの血肉となり、ゆくゆくは5分で簡単なWebAPIなら作れるようになるでしょう!!
(今すぐ5分でAPIを作れるようになるとは一言も言っていn(ry
また当記事は、Ruby on Railsがすでにインストールされ、かつターミナル(CUI)からの操作を前提としています。
まだ、Railsが導入できていない場合は、申し訳ありませんがRuby/Railsのインストールから始めてください。
それでは、さっそくWebAPIを作ってみましょう!!
APIを作るためRailsの準備をする
API用のRailsアプリケーションを用意します。
コマンドrails newで作成し、念の為に起動確認します。
| shell | |
|---|---|
| 1 | rails new api |
| 2 | cd api |
| 3 | rails s |
上記コマンド入力後、ブラウザを開いて下記URLにアクセスしてください。
いつものRails画面がでたらOKです。
http://localhost:3000/contacts
scaffoldで問い合わせAPIをさっくりと作る
今回はよくアプリ内でよく使う(?)であろう「お問い合わせAPI」を作成します。
Railsを使えばAPIなんて魔法のように簡単にできます。
そうです。scaffoldを使います。
| shell | |
|---|---|
| 1 | rails g scaffold contact name:string contact:text |
| 2 | rake db:migrate |
APIを使用するためにprotect_from_forgery(CSRF対策)を無効にします。
セキュリティ的には弱くなりますので本番環境で使う際には適切な設定にしてください。
| app/controllers/application_controller.rb | |
|---|---|
| 1 | class ApplicationController < ActionController::Base |
| 2 | # Prevent CSRF attacks by raising an exception. |
| 3 | # For APIs, you may want to use :null_session instead. |
| 4 | protect_from_forgery with: :null_session # ここの :exception を :null_session に変更 |
| 5 | end |
4行目の protect_from_forgery with: :exception を protect_from_forgery with: :null_session に
変更したらコーディング完了です。ね?簡単でしょ?
次のステップに進むまえに念のためRailsサーバーを再起動しておきましょう。
Ctrl+cのあとに$ rails sで再起動できます。
curlコマンドで問い合わせAPIの動作を検証する
それでは、問い合わせAPIが動作するか検証してみましょう。
今回はAPI作成時に大変お世話になっているcurlコマンドさんを使用します。
| shell | |
|---|---|
| 1 | curl -X POST -H "Accept: application/json" -H "Content-type: application/json" -d '{ "contact": { "name":"cre8cre8", "contact":"Hello, My name is Takumi Nishimura." } }' http://localhost:3000/contacts.json |

問い合わせAPIがただしく動作した場合は上記のようなスクリーンショットになります。
http://localhost:3000/contact にアクセスして送信したデータが登録されているか確認しましょう。

Name/Contactにcre8cre8/Hello, My name is Takumi Nishimura.とデータが表示されていたら
データベースにもデータが正常に保存されています。
[Error] どうしてもエラーがでてうまく動作しない場合の最終兵器
エラーの場合は下記スクリーンショットのようにターミナルに表示されます。

もし、上記のような画面になった場合は1から3の手順をもう一度試してみてください。
どうしてもエラーがでちゃう。。。早くiOS/Androidのコーディングしたいのに。。。 っという方や
API?んー。。。それより早く次のステップに進みたいんだけど。。。 っという方に朗報です。
たくみのgithubに今回のソースコードを公開しています。
やんごとなき事情により上記手順をすっ飛ばしたい方はgit cloneして、Railsサーバーを立ち上げてください。
| shell | |
|---|---|
| 1 | git clone https://github.com/takumiio/5minutes-api |
| 2 | cd 5minutes-api |
| 3 | rake db:migrate |
| 4 | rails s |
まとめ
5分でお問い合わせAPIを作りはいかがでしたでしょうか?
最後にもう一度簡単に手順をおさらいしましょう。
- API用のRailsアプリケーションを作成 (
$ rails new api) - scaffoldでAPIを作る
- curlコマンドでテストし確認
シンプルで簡単なAPIだとこんな簡単に作れるのがRailsの魅力だと思います。
本格的なAPIを用いたアプリを作る場合は、これをひな形にコードを足していくだけで
十分実用的なAPIを作成することもできます。
実際、私はAPIを作るときRailsばかり使ってます。(やめられない♪とまらない♪)
次回はiOS(swift)で今回作ったお問い合わせAPIと連携するアプリを作成します。
もしわからないことや質問などありましたらお気軽にコメントやお問い合わせをしてくださいね。
それでは、次回をお楽しみに♪