Upgrade to Pro — share decks privately, control downloads, hide ads and more …

APIについて

MiyakeMito
April 16, 2022

 APIについて

MiyakeMito

April 16, 2022
Tweet

More Decks by MiyakeMito

Other Decks in Technology

Transcript

  1. Power Automate と Power Virtual Agents で ゲームを作ってます ⚫ オセロ

    ⚫ 神経衰弱 ⚫ どうぶつしょうぎ ⚫ WORDL
  2. APIとは ① ◼ 「Application Programming Interface」 ◼ 「アプリケーション」と「プラグラム」を「つなぐ」もの ◼ 異なるアプリやソフトウェアが、APIを通じて外部のアプリ

    やソフトウェアを呼び出し、その機能を利用する仕組み API API提供者 API利用者 WEBサービスを普及 サービスの流通 利便性・生産性向上 開発の効率化 セキュリティ向上 ソフトウェアの機能を 共有できる仕組み
  3. APIとは ② API API API API API API API API

    API みんなAPIでつながる
  4. APIとは ③ ◼ Web 上で API のやり取りを可能としたもの ⇒ Web API

    ◼ Web API のメリット • ネットワークがつながればどこからでもアクセスができる • ネットワークがつながれば何からでもアクセスができる • やりとりする情報の取り扱いが容易である
  5. ◼ Yahoo!商品検索 API • JANコード(バーコード)で、Yahoo!ショッピングの商品検 索結果を取得してみます • 事前にアプリケーションIDを登録する必要があります https://developer.yahoo.co.jp/yconnect/v1/registration.html •

    ブラウザからアクセスします https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid =<アプリケーションID>&jan_code=<JANコード>&in_stock=true ここでちょこっとデモ
  6. REST APIとは ① ▪ 「REpresentational State Transfer」 具象的な 状態の 転送

    ▪ 「具体的に状態を定義した情報の転送」 ▪ 「RESTの4原則」を満たす「RESTful」なAPI
  7. HTTPリクエストの構成 ▪ メソッド以外にも指定する要素があります POST https://jlp.yahooapis.jp/FuriganaService/V2/furigana ?APPID=<AppID> Content-Type: application/json { "id":

    "1234-1", "jsonrpc": "2.0", "method": "jlp.furiganaservice.furigana", "params": { “q”: “愛くるしいパンダが一杯登場する登壇", "grade": 1 } } メソッド パスパラメータ ルビ振り クエリパラメータ リクエストヘッダ リクエストボディ リクエスト ライン
  8. HTTPレスポンスの構成 ▪ レスポンスにも構成があります 200 OK DATE: Thu, 14 Apr 2022

    13:21:16 GMT Content-Type: application/json; charset=utf-8 { "id": "1234-1", "jsonrpc": "2.0", "result": { "word": [ { "furigana": "あいくるしい", "roman": "aikurusii", "subword": [ ルビ振り レスポンスヘッダ レスポンスボディ ステータス
  9. HTTPメソッド まとめ メソッド CRUD 動作 リクエスト ボディ べき等 GET READ

    リソースから情報を取得 なし 〇 POST CREATE リソース名がサーバ側で割り振られて作成 あり × PUT CREATE/ UPDATE リソース名を指定して作成または更新 (REPLACE) あり 〇 PATCH UPDATE リソースを部分更新する あり 〇 DELETE DELETE リソースを削除 なし 〇 ※あくまでAPI設計の指標です。これらに当てはまらないAPIも存在します。
  10. 接続性 (Connectability) ▪ 応答する情報にハイパーリンクを含むことができる ▪ 1つのリンクから別の情報に接続が可能であること "results": [ { "name":

    "Luke Skywalker", "height": "172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.dev/api/planets/1/", "films": [ "https://swapi.dev/api/films/1/", "https://swapi.dev/api/films/2/", "https://swapi.dev/api/films/3/", "https://swapi.dev/api/films/6/" ], "species": [], Luke Skywalker が登場する作品 の情報が記載されている
  11. 認可サーバー APIのセキュリティ ▪ OAuth2.0 ① 許可申請 クライアント ② 権限付与確認 ③

    許可 ④ 認可コード発行 利用権でアクセス ⑤ アクセストークン リクエスト ⑥ アクセストークン 取得 そうだよ リソースサーバの API使いたい ID Pass 知ってるクライアント? 許可されたよ 許可権を利用権 にかえて 利用権だよ ⑦ APIへ アクセス ⑧ リソース取得 やったぜ! リソースオーナー リソースサーバー リソースサーバーの ID・パスワード API
  12. OAuth2.0 ▪ 従来のID・パスワードとは異なるトークンベースの認証 – ID・パスワードを他のサービス渡さず済む ▪ 委譲する権限を限定(認可) – トークンを盗まれても被害を最小限に抑えれられる ▪

    アクセストークンに有効期限を設定 – 万が一トークンを盗まれても有効期限過ぎると使えない ▪ 認可コードフローなどによりトークンを安全に取得 – ユーザーの質が担保できる
  13. 提供コネクタ ▪ 標準コネクタ+プレミアムコネクタ ▪ Services :697 Actions :8686 Triggers :894

    (2022/4/15) ▪ https://connectorinfo.z31.web.core.windows.net/apilist.html ▪ https://docs.microsoft.com/ja-jp/connectors/connector- reference/