2019年8月4日RESTfulAPIを使ってみたいけどAPIって何?WebサービスAPIDjangoなどのパッケージを駆使し、RESTfulなWebAPIを作ってみたいと思います。Interfaceの略称です。あるサービス提供者が、そのサービスを利用するために提供するインタフェースを意味します。代表的なものとして、ウェブサイトに埋め込まれたtwitterのタイムラインがあります。APIのメリットアプリケーション開発者(API利用者)がAPIを利用すれば、WEB上のどこでも同じ機能が利用でいます。同じ機能を持ったサービスを開発する必要がないため、開発効率の向上や開発費用の低減が期待できます。銀行口座に対して入金するときを想像します。API提供者が入金サービスをAPI(以下、入金API)で提供しており、そのサービスには以下の機能があります。合算後の残高を表示する機能API利用者は入金APIに対して必要なパラメーターを与えます。すると上記の機能全てが実現し、自分で作る必要がないので煩雑な機能の設計や実装といった作業から解放されます。APIとは?先に述べた入金APIのようなAPI提供者とAPI利用者とのやりとりを「HTTP/HTTPS」ベースで実現する仕組みです。APIとWebAPIの違い「Web」ではないAPIは通常、API利用者が用いるプログラミング言語と、API側が同じ言語で提供されることが多いです。APIは「HTTP/HTTPS」ベースのAPIです。そのため、異なるプログラミング言語で開発されたアプリケーション間を連携させることができます。Webブラウザでも利用できるため、通常のAPIよりも汎用(はんよう)的に利用できます。APIの代表的な実装方式として、RESTとSOAPがあります。Transferの略称です。API)と呼びますが、以下のように定義されています。API)とは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、RESTと呼ばれる設計原則に従って策定されたもの。APIでは、URL/URIですべてのリソースを一意に識別し、セッション管理や状態管理などを行わない(ステートレス)。同じURLに対する呼び出しには常に同じ結果が返されることが期待される。リソースの操作はHTTPメソッドによって指定(取得ならGETメソッド、書き込みならPOSTメソッド)され、結果はXMLやHTML、JSONなどで返される。処理結果はHTTPステータスコードで通知するという原則が含まれることもある。e-WordsRESTの4つの設計原則RESTは、以下の4原則に従った上で開発します。セッションなどの状態管理を行わない(やり取りされる情報はそれ自体で完結して解釈することができる)情報を操作する命令の体系が予め定義・共有されている(HTTPのGETやPOSTメソッドなど)すべての情報は汎用的な構文で一意に識別される(URLやURIなど)情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができるAPIにおけるリソースとは、APIを介して操作するDBやテーブルなどの情報資源です。リソースに対してURLが対応づけられます。(そのため、URLが名詞的になることが多いです。)セッションなどの状態管理を行わないステートレス(システムが現在の状態を表すデータなどを保持しないよう)にします。例)前回のAPIコール結果にかかわらず同じ値を戻します。1合計1000件のデータが存在し、1回目のAPIコールで100件まで取得します。21の状態は考慮せず、2回目のAPIコールでも同じ100件を戻します。Create、Reference、Update、Delete)を実行します。POSTメソッド→作成(Create)GETメソッド→参照(Reference)PUT/PATCHメソッド→更新(Update)GETメソッド→参照(Reference)DELETEメソッド→参照(Delete)すべての情報は汎用的な構文で一意に識別されるURIで操作対象のリソースを識別可能にします。例)1「ユーザー」というリソース(操作する対象のデータ)を表すために「users」というリソース名を付与します。2ユーザIDが「1000」のユーザー情報を取得したい場合、下記のようなURIフォーマットでURIを生成して操作可能状態にします。URIフォーマット:https://example.com/users/:user_id生成されたURI:https//example.com/users/1000情報の内部に、別の情報や(その情報の別の)状態へのリンクを含めることができるレスポンスとしてXMLもしくはJSONで操作結果を戻します。例)1データ操作を実行します。2適切にデータ操作できました。その操作結果をXMLもしくはJSONで記述します。3HTTPのレスポンスボディーに含め、APIコール元に戻します。SOAPとは?SOAPは、XMLを利用したWebサービス連携プロトコルです。XMLで記述された「SOAPメッセージ」と呼ばれるデータをやりとりします。Language)というWebサービスインタフェース記述言語で構造を定義します。代表的なSOAPサーバーソフトウェアとして、JAVAの「AXIS2」があります。このWSDLによる定義ファイルをAPI利用者、API提供者双方で保持します。すると、独自に定義した構造のSOAPメッセージをやりとりすることが可能となります。SOAPとRESTの違いどちらも「クライアント–サーバ間」でファイルをやり取りすることには違いありません。設計思想としては、REST=非同期・SOAP=同期のような感じです。まとめAPIとは、外部からサービスを提供してくれるインターフェース。RestfulAPIは、POSTメソッドを使ってJSONを受け取ったりすること。RestfulとRestはほぼ同じと考えてOK。SOAPとは、XMLで記述された「SOAPメッセージ」をやりとりするもの。