はじめに
railsで学習していくなかで
自分が作ったAPI作る、使う他のプロジェクトで使うときに詰まった点についての
個人的な備考禄になります。よしなに。
APIって何だよ
APIとは「アプリケーション・プログラミング・インターフェース(Application Programming Interface)」の略です
インターフェイスっていうのは「接点」って意味で
結論から言うと「ソフトウェア同士のを繋ぐための接点」ってことです。
よくわかんないですね。はい。
簡単に言うとAPIを利用することで、外部の開発者がそのサービスの機能やデータにアクセスでき開発者は既存のコードや機能を再利用したり、それを使ってカスタマイズしたアプリケーションを作れたりします。
「自分で作ってもいいけどそれ使うより誰かが書いてくれた機能を使ってやりたい事やれれば時短だし楽にアプリ作れるくね?」ってことです。ありがたや。
APIの使い方は
今回はraiksで作成したAPIをrailsで使っていくのでそれ以外のAPIの使い方は正直分かりません。ごめんなさい。
先ずrailsAPIをたたいてみましょう
apiをたたくというのは「URIで特定の要求を送信(リクエスト)すると応答としてAPIはデータを返してくれます」これを「APIをたたく」と言います。
WebAPIのほとんどはAPIをたたくとこういった「JSONファイル」が返ってきます。
これを見たら何となくAPIがどういった仕組みになっているかわあ狩るんじゃないでしょうか
つまりAPIとは誰かが作った機能を「APIをたたく」行為で
API提供側のmodelとcontrollerの機能だけ使われてもらい
controllerから来たレスポンスただViewに表示させているだけなんですね。
API側にはCORSを設定しておけ!
CORSとは
システムの仕組みのうちの一つ。
「Cross-Origin Resource Sharing」(オリジン間のリソース共有)
HTTPヘッダーから詳細情報を読み取り
あるオリジンで動いているアプリケーションを異なるオリジンにある選択された
リソース(データ、ファイルなどアクセス出来るもの)にアクセス権を与えるようにブラウザに指示する
仕組み。
要するに異なるオリジン間を通信する仕組み。
CORSは「同一生成ポリシー」の縛りを開放して異なるオリジン間でもリソースにアクセスできるようにする仕組み。
設定の仕方
①APIのサーバー側のGemfileに
「gem 'rack-cors'」
を記述(或いはコメント化して残っているので解除)
②「bundle install」でgemをインストールする。
③「config > application.rb」の先頭に
「require 'rack/cors'」を追加
④↓これを追加
config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*' # 全てのオリジンからのリクエストを許可
resource '*', headers: :any, methods: [:get, :post, :put, :patch,
:delete, :options]
end
end
これのざっくりとした解説
-
「Rack::Cors」…
クロスオリジンリクエストを処理するためのミドルウェア。
重要なのでどのミドルウェアよりも先頭に配置すべきもの -
「middleware.insert_before 0」…
ミドルウェアを挿入するためのメソッド -
「allow do」
ミドルウェアの設定ブロック内の特定のセクションを指定するための構文です。
ブロック内にはクロスオリジンリクエストを許可するためのルールや、条件を記述することができ
これらの設定を含めることができる -
allow doに入れられるもの一覧
・「origins」…許可するオリジン(リクエスト元)。''を含めるとすべてのオリジンを許可することができる。
・「resource」…許可するリソース。(エンドポイント)''を
含めるとすべてのリソースに対して許可を出すことができる
・「headers」…許可するヘッダーを指定できる。「:any」を使用するとどのようなヘッダーでも許可する。
・「methods」…許可するHTTPメソッドを記述する
。