未来環境ラボの坂本です。
2014年に作成した Random Data Web API というものを最近改修しました。
ランダムなデータを生成するための JSON Web API です。
以下のデータを生成できます。
- アルファベット
- アルファベットと数字
- バイト列
- 16進数形式、Base64 形式
- UUID (GUID)
- 時刻順の ID
- 現在の時刻をもとに、並べ替え可能な GUID を生成
- SQL Server の uniqueidentifier 型にも対応
という感じで、内容自体はとくに変哲のない API です。
時刻順の ID は少し珍しいかもしれませんが。
また、仕様が記述されたヘルプページ、および jQuery を利用したテストページが付属しています。
さて、どちらかというとここからが本題です。
サービスとして公開されているタイプのよくある Web API は、利用する開発者からするとすぐに利用できてとても便利ですが、提供者側の意向でサービスが終了するという問題点があります。
例えば最近では、Google の URL 短縮サービス「goo.gl」が終了予定と発表されました。
無償・有償を問わずサービスが永久に提供されるとは限らないため、なるべく自身のアプリをそれに依存させず、自身でサービスを運用することが望ましいでしょう。
そこでこの Web API では、ソースコードをオープンソース ライセンスのもとで提供し、それを利用する開発者自身がサービスをホストすることを想定します。
例えば Azure Web App などの PaaS (Platform as a Service) を利用すれば GitHub から直接ビルドおよびデプロイができるため、簡単な手順でサービスの運用を開始させることができます。
詳細の方法については Azure Web App にデプロイする手順にまとめてあります。
この場合はさらに継続的デプロイが構成され、
設定したリポジトリが更新されれば Azure Web App も自動的に更新されます。
また、この Web API の技術的な特徴としては、以下が挙げられます。
- ASP.NET Web API
- .NET プラットフォームでは、これで JSON Web API を作れます
- ASP.NET Web API Help Page
- ソースコード内のコメントからヘルプページを自動生成
- ASP.NET Web API Cross-Origin Support
- CORS (Cross-Origin Resource Sharing)
- HTTPS 必須化
- HTTP でアクセスされたら HTTPS の URL にリダイレクト
- 設定方法はアプリケーション設定に記載
- 技術的な説明は静的コンテンツにも SSL を強制するに記載
ヘルプページの多言語対応については、ブラウザーの翻訳機能を利用すれば何とか読めると思います。
今後もこのような Web API やライブラリを制作していくつもりです。
KCG の学生の皆さんは、プロジェクト演習などで活用してみてはいかがでしょうか。
バージョン情報
- .NET Framework 4.5
- ASP.NET Web API 5.2.3
- ASP.NET Web API Help Page 5.2.3
- ASP.NET Web API Cross-Origin Support 5.2.3
- Blaze 1.1.10
参照
- Random Data Web API (GitHub)
- randomdata.azurewebsites.net (配置例)
- ASP.NET Web API の Tips (1)
- 静的コンテンツにも SSL を強制する
- Azure と GitHub で継続的デプロイ (2017)