0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

railsAPIソフトを使う・作る上での備考禄

Posted at

はじめに

railsで学習していくなかで
自分が作ったAPI作る、使う他のプロジェクトで使うときに詰まった点についての
個人的な備考禄になります。よしなに。

APIって何だよ

 APIとは「アプリケーション・プログラミング・インターフェース(Application Programming Interface)」の略です
インターフェイスっていうのは「接点」って意味で
結論から言うと「ソフトウェア同士のを繋ぐための接点」ってことです。
よくわかんないですね。はい。
簡単に言うとAPIを利用することで、外部の開発者がそのサービスの機能やデータにアクセスでき開発者は既存のコードや機能を再利用したり、それを使ってカスタマイズしたアプリケーションを作れたりします。
「自分で作ってもいいけどそれ使うより誰かが書いてくれた機能を使ってやりたい事やれれば時短だし楽にアプリ作れるくね?」ってことです。ありがたや。

APIの使い方は

今回はraiksで作成したAPIをrailsで使っていくのでそれ以外のAPIの使い方は正直分かりません。ごめんなさい。
先ずrailsAPIをたたいてみましょう
apiをたたくというのは「URIで特定の要求を送信(リクエスト)すると応答としてAPIはデータを返してくれます」これを「APIをたたく」と言います。

そうするとjsonファイルが返ってきます
こんな感じ
apiたたく.png

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メソッドを記述する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?