Azure API Management を使用して生活を楽にする方法
今日の Web 上で最もエキサイティングな進化の 1 つは、企業や個人によって公開される API の数が増え続けていることです。
今日の Web 上で最もエキサイティングな進化の 1 つは、企業や個人によって公開される API の数が増え続けていることです。これらの API を使用すると、所有者は内部システムのデータをインターネットに公開できるため、外部の開発者は API を使い始めることができます。ProgrammableWebなどの Web サイトには、これらすべての API がリストされており、そのリストは日々増え続けています。
つまり、データやサービスを活用するアプリケーションを作成するのではなく、単に API を公開し、他のユーザーにアプリケーションを作成させるということです。または、両方を行うこともできます。たとえば、Facebook、Twitter、Googleはすべて独自のアプリケーションを持っていますが、サービスとデータもAPIに公開しています。
このようなAPIを作成することと、それを公開、保守、文書化することとが1つのことです。あなたはおそらく、誰もがあなたの開発に無制限にアクセスできることを望まないでしょう - あなたは例を挙げたドキュメントサイトを持ちたいかもしれませんし、また、ごく自然にそれを収益化したいと思うかもしれません。
さて、ここで朗報です: Azure Management APIは、これらすべてに加えて、それ以上のことを行います。これにより、API をインターネットに公開したり、コード サンプルとドキュメントを自動的に生成したり、アクセスと調整を構成したり、API の使用状況を分析したりできます。
何を見せますか?
このブログ記事では、Azure Management API に発行される API を作成することで、内部データ ソースをクラウドに発行します。これには、次の手順が含まれます。
- Create a Web API
- この Web API を Azure Web アプリに発行する
- Publish to Azure Management API
- クライアントプロジェクトで使用する
Create a Web API That Publishes Data
今日の投稿では、架空のデータソースを公開するために、ASP.NET Web API プロジェクトを作成します。これは、テスト結果や分析データなどの内部データベースである可能性があります。簡単にするために、実際のデータ ソースを公開するのではなく、データ ソースをシミュレートするスタブを作成します。どちらの場合も、実行する手順はまったく同じです。
架空のデータソースをAzureに公開するのは、これが最も簡単な解決策だからです。お気軽にフォローしてください - (無料の)アクティブなAzureサブスクリプションが必要になります。または、インターネットから利用できる限り、任意の IIS Web サイトにデプロイすることもできます。
さあ、筋肉を伸ばし、指を鳴らして、さっそく本題に入りましょう!
まず、Visual Studio を開きます。私はVisual Studio 2015を使用していますが、これは異なるバージョンでも機能するはずです。[ファイル] メニューの [> 新しいプロジェクト] をクリックし、[Visual C#] > [Web] > ASP.NET [Web アプリケーション] を選択します。
![Click File -> New Project and choose Visual C# -> Web -> ASP.NET Web Application. [ファイル] メニューの [> 新しいプロジェクト] をクリックし、[Visual C#] > [Web] > ASP.NET [Web アプリケーション] を選択します。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/1321.aidan_5F00_1.png)
わかりやすい名前と場所を入力し、[OK] をクリックします。
次の画面では、テンプレートを選択できます。私は ASP.NET 4.5.2のWeb APIテンプレートを使用しており、Azureでホストするように命令しています。

また、[認証の変更]をクリックして、[認証なし]に設定します。
![Also, click on Change Authentication and set it to No Authentication: また、[認証の変更]をクリックして、[認証なし]に設定します。](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/8231.aidan_5F00_3.png)
この画面で [OK] をクリックし、[新しいプロジェクト] 画面で [OK] をクリックします。Azureポップアップで、Azure Webアプリの詳細を入力する必要があります。オーストラリア東部で新しい Azure Web アプリを作成することにしました。

[OK] をクリックすると、プロジェクトが作成されます。これには少し時間がかかる場合がありますので、コーヒーを飲んで次のビットに進む準備をしてください!
デフォルトのWeb APIテンプレートには多くのものが含まれていますが、そのほとんどは必要ありません。しかし、私はAzure API Management側に焦点を当てたいので、プロジェクトをクリーンアップするつもりはありません。
既定のテンプレートには、ValueController と呼ばれる 1 つの ApiController が含まれています。F5 キーを押して、/api/values に移動します。次の 2 つのテスト値が表示されます。

本番環境のAPIでは、このテンプレートを使用して開始することはおそらく望ましくないため、ゼロから始めて必要なものだけを追加することをお勧めします。ただし、この場合、このデフォルトのテンプレートは問題なく機能します。
Web API サービスは RESTFUL サービスです。これの欠点は、機械可読な定義が得られないことです。Azure API Management には、Swagger または WADL の定義が必要です。デフォルトでは利用できないため、Swashbuckleを追加してこれを追加します。NuGet パッケージ マネージャーを開き、Swashbuckle を検索して、Swashbuckle.Net45をプロジェクトに追加します。

F5 キーを押し、/swagger に移動して、次の情報を確認します。

Azure Management API を作成しましょう
Azure で API を管理するには、API を Azure に発行する必要があります。API プロジェクトを右クリックし、[公開] を選択します。
![Before Azure can manage our API, we need to publish it to Azure. Right-click the API project and select Publish Azure で API を管理するには、API を Azure に発行する必要があります。API プロジェクトを右クリックし、[公開] を選択します](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/2084.aidan_5F00_8.png)
すべてのデフォルト設定をそのままにして、「公開」をクリックできます。待って、待って、待って、ブラウザを開いて公開Webサイトを表示する必要があります!ウープウープ!


次に、/swagger を参照し、ドキュメントの URL をクリップボードまたはメモ帳にコピーします。私の場合は、こちらのURLでしたhttp://azureapidemo0955.azurewebsites.net:80/swagger/docs/v1
次に、新しいプレビュー ポータル (portal.azure.com) では使用できないため、"古い" Azure ポータル (manage.windowsazure.com) に移動します。[新規] -[> App Services] -> [API Management] -> [Create] をクリックします。
![go to the “old” Azure Portal (manage.windowsazure.com), as this functionality is not available in the new preview portal (portal.azure.com). Click on New -> App Services -> API Management -> Create この機能は新しいプレビュー ポータル (portal.azure.com) では使用できないため、"古い" Azure ポータル (manage.windowsazure.com) に移動します。[新規 -> App Services] -> API Management -> [作成] をクリックします。](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/1882.aidan_5F00_10.png)
名前、サブスクリプション、リージョンを選択し、[次へ] をクリックします。
![Pick a name, subscription, a region and hit Next 名前、サブスクリプション、地域を選択し、[次へ]をクリックします](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/8322.aidan_5F00_11.png)
次の画面で、連絡先の詳細を入力する必要があります。

デフォルト設定(開発者の価格帯など)で十分であるため、詳細設定を設定する必要はありません。チェックマークを押して完了します。
おそらく、これには最大30分かかる可能性があるため、しばらくの間何か他のことをしたいと思うでしょう。ちょっと一口食べて、終わったら戻ってきてください!
Manage the Azure API Management Service
プロビジョニングの準備ができたら、それを選択し (タイトルをクリックしないでください)、フッターの [管理] をクリックします。これにより、Azure API Management ポータルが開きます。

「Import API」をクリックし、「From URL」を選択して詳細を入力します。
![Click on Import API, select “From URL” and enter the details [Import API] をクリックし、[From URL] を選択して詳細を入力します](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/4657.aidan_5F00_14.png)
API を "Unlimited" 製品グループに追加しました。何らかの理由で、私はエラーを受け取りました:
"サブスクリプション キーがないため、アクセスが拒否されました。APIポータルからテストするときは、そのヘッダーが事前に入力されていなかったため、API にリクエストを行うときはサブスクリプション キーを含めるようにしてください。[Save] をクリックし、ヘッダーの [Developer Portal] をクリックします。
![Hit Save, and click on Developer Portal in the header [Save] をクリックし、ヘッダーの [Developer Portal] をクリックします](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/2514.aidan_5F00_15.png)
今見ているのは、独自のAPIの公開開発者ポータルです。これは、API を使用するすべてのユーザーの出発点です。他のユーザーは、ドキュメントを読み、API をテストし、サインアップして使用できます。
[API -> Azure API Demo -> Values_Get – GET 1] をクリックして、GetAll メソッドをテストします。送信を押して、魔法が起こるのを見てください。Azure API ポータルによって Web API が呼び出され、次の結果が表示されます。
![Click on API -> Azure API Demo -> Values_Get - GET 1 to test the GetAll method. Hit Send and see the magic happen. The Azure API Portal calls your Web API and shows the following result [API -> Azure API Demo -> Values_Get - GET 1] をクリックして、GetAll メソッドをテストします。送信を押して、魔法が起こるのを見てください。Azure API ポータルによって Web API が呼び出され、次の結果が表示されます](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/0844.aidan_5F00_16.png)
これで、基本的な設定が完了しました。API は Azure API Management によって管理され、ユーザーがサインインできる開発者ポータルなどがあります。
MVCコントローラーの保護されたAPIを活用
前に作成したプロジェクトの API を使用して調整を実装できることを示します。まず、APIに「Starter」という製品を追加します。Azure API Management ポータルで、 [APIs] -> [AzureApiDemo] -> [Products] をクリックし、スターターを追加します。
![From the Azure API Management Portal, click on APIs -> AzureApiDemo -> Products and add Starter Azure API Management ポータルで、 [APIs] > [AzureApiDemo] > [Products] をクリックし、スターターを追加します](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/4645.aidan_5F00_17.png)
次に、開発者ポータルに移動し、[管理者] > [プロファイル] をクリックします。スターター サブスクリプションの主キーをコピーします。
![go to the Developer Portal and click on Administrator -> Profile. Copy the Primary Key for the Starter Subscription 開発者ポータルに移動し、[Administrator -> Profile] をクリックします。スターターサブスクリプションの主キーをコピーする](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/6470.aidan_5F00_18.png)
この値をメモ帳にコピーします。
Web API プロジェクトには、ドキュメントをレンダリングする MVC パーツも含まれていました。Azure API Management によって管理される API を呼び出すことができることを示すコードをいくつか追加します。
次に、Controllers -> HomeController を開き、Index メソッドを次のように置き換えます。
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var wr = WebRequest.CreateHttp("https://azureapidemo.azure-api.net/api/Values");
wr.Headers.Add("Ocp-Apim-Subscription-Key", "b690fce8fe4a44a8b42834c1d040cd31");
using (var response = wr.GetResponse())
{
var html = new StreamReader(response.GetResponseStream()).ReadToEnd();
ViewBag.WebResponse = html;
}
return View();
}
サブスクリプション キーを、前にコピーしたものに置き換えます。
最後に、@ViewBag.WebResponse を [ビュー] の [> ホーム] -> Index.cshtml のビューのどこかに追加します

ここで F5 キーを押すと、Azure Management API サービスを介して Web API からの応答が表示されます。
しかし、ブラウザを6回更新すると、例外が発生します。

これはほんの始まりに過ぎません
今日の投稿では、API を Azure Management API に発行し、使用量の調整を使用してその使用量を保護する方法をお示ししたいと思います。しかし、それはほんの始まりに過ぎず、できることはまだまだたくさんあります。ここでは、ぜひ見るべき追加機能をいくつか紹介します。

1. Statistics
開発者ポータルで、「管理者 - > 管理」をクリックします
これにより、管理ポータルの [分析] ビューが表示され、さまざまな分析データが表示されます。
![the Analytics view in the Management Portal with a wide range of analytics data 管理ポータルの [分析] ビューと、さまざまな分析データ](/community/cfs-filesystemfile/__key/CommunityServer.Blogs.Components.WeblogFiles/devtoolsguy.Maria_5F00_Blogs.November/5430.aidan_5F00_22.png)
2. 製品
これについては、製品「Unlimited」と「Starter」にAPIを追加することで簡単に触れました。製品は、誰がどのくらいの頻度で使用できるかを定義します。たとえば、デフォルトのグループ「Starter」では、ユーザーは最大5回/分、最大100回/週に実行できます。
詳細については、Microsoft のサイトを参照してください。
3. Azure Direct Connect を使用して内部 API に接続する
この例では、API をパブリック Azure Web アプリに公開しています。ほとんどの場合、API は内部ネットワーク上に存在します。Azure ExpressRoute を使用すると、VPN 経由で Azure Management API で API を利用できるようにすることができます。API は引き続き外部から隠され、Azure のみがアクセスできます。詳細については、こちらを参照してください。
また、Azure サイトの Advanced Documentationで、さらに優れた例を確認することをお勧めします。
すべてが順調であれば、今日、パブリックな Azure Web アプリに API を発行する方法を学習し、少なくとも 1 杯のコーヒーと軽いランチを食べたことになります。下のコメントセクションで連絡を取り、あなたの考えを共有してください!
デスクトップ、モバイル、またはWebアプリケーションを高性能なコントロールで構築したいとお考えですか?今すぐUltimate無料トライアルをダウンロードして、それがあなたのために何ができるか見てください!