ラベル Web API の投稿を表示しています。 すべての投稿を表示

OpenAPI Specification 入門

今回は「OpenAPI Specification の使い方」についてまとめます。 OpenAPIに触れるとでてくる Swagger についても、位置づけや役割もあわせてまとめています。 目次 概要 OpenAPI とは Swagger とは データ型 基本構造 スキーマ詳細 info servers tags paths パス、メソッド、操作 リクエストパラメーター リクエストボディー ...

Swagger Codegen の使い方

今回は「Swagger Codegen の使い方」についてまとめます。 インストールからソースコード生成、動作確認までの一連操作を自PC上で行う場合の手順をまとめています。 目次 Swagger Codegen とは インストール コード生成 生成したサーバーサイドコードの動作確認 Swagger Codegen とは Swagger Codegen とは「OpenAPI Specificatioinに従って記述されたAPI仕様書を元に、ソースコードを生成するツール」です。 Swagger Editor, UI とともによく使われるツールになります。 Web上で出力もできますし、Dockerを利用した出力方法もありますが…今回は純粋に自端末で出力する方法をまとめます ...

Swagger UI の使い方

今回は「Swagger UI の使い方」についてまとめます。 目次 Swagger UI とは 基本的な使い方 Node.js + Express サーバー上に展開 サーバーの実装 サーバーの起動 動作確認 初期表示のカスタマイズ 自身のAPI仕様を表示 ヘッダーを非表示 (おまけ)最終的な構成 Swagger UI とは Swagger UI とは「OpenAPI Specificatioinに従って記述されたAPI仕様書をWebページ上で見やすく表示するツール ...

JSON Web Token (JWT) の 仕様 と 使い方

今回は「JSON Web Token」についてまとめます。 目次 概要 仕様 構造 ヘッダー ペイロード 署名 使い方 注意点 概要 JSON Web Token は略して JWT (ジョット) と呼びます。 「セッション情報をサーバーサイドで保存せずクライアントサイドで保持できる(ステートレスが実現できる)」点が特徴です。 WebAPIとか作るときは便利な仕様です。 JWTの仕様(= トークンの仕様)自体はシンプルですし、使い方も簡単です。 ただ…使い方を間違えると脆弱性ができてしまうので、使い方には要注意です。 仕様 ...

Node.js + Express で WebAPI を作る

Node.js + Express で WebAPI を作成してみます。 最近だと モバイルアプリ や SPA (Single Page Appliction) などで利用されるような機能を実装するイメージです。 あまり難しいことはせず、単純な GET と POST の例でまとめました。 目次 概要 実装 テスト 概要 画面を返さず JSON を返却する WebAPI を作成してみます。 今回は 単純な GET と POST を行うサンプルです。 具体的なパスは以下のようなものを作る予定です。 GET: /api/user/:id POST: /api/user 上記の POST URLにリクエストしたときの動きのイメージは以下のようなものです。 実装 今 ...

ASP.NET で 承認 (Authorization) を 制御する 方法

最近の Webアプリケーション であれば ユーザー認証 を必要とするサイトが普通かと思います。 ユーザー認証の仕組みを作るのと同じように必要となるのがコンテンツに対するアクセス制御です。 ここでは コンテンツに対するアクセス制御 の具体的な実装例をまとめます。 目次 概要 web.config で 制御する 方法 属性 で 制御する 方法 概要 ユーザー認証が終わると、続いてコンテンツにアクセスして良いかどうかの判断(承認)が行われます。 以下では承認の方法別メリット・デメリットおよび一般的な実装概念について述べます。 手法別メリット・デメリット 具体的なアクセス制御方法ですが、ASP.NET の 承認制御 は 「web.config を用いた方法」 と 「ソースコードに属性として記述する方法」 の2パターンがあります。 それぞれのメ ...

WebAPI + HTML + JavaScript において ファイル を ドラッグ&ドロップ で アップロード する 方法

よくある Webページ上に ファイル を ドラッグ & ドロップ して アップロード する アプリ を作ってみます。 この記事では サーバー側 と クライアント側 をまとめて掲載しています。 サーバー側は ASP.NET WebAPI、クライアント側は HTML + JavaScript で実装します。 アップロード は POST で フォームデータ として アップロード します。 目次 サーバー処理 クライアント処理 HTML CSS JavaScript サンプルコード GitHub - garafu / samplecode_FileUpload ダウンロード zip サーバー処理 WebAPI 用 の コントローラ を作成します。 受け取る ファイルデータ ...

ASP.NET で 認証 に 関する オブジェクト の関係

ASP.NET で認証に関する オブジェクト をクラス図に書き出してみました。 後半では、認証に関するオブジェクトのちょっとした使い方を記載しています。 目次 認証に関するオブジェクトのクラス図 認証されたかどうかを検出する 認証されたことを登録する

ASP.NET の IHttpModule の 実装 と 利用

ASP.NET アプリケーション に対して モジュール化 された複雑な機能、処理を提供したい場合、 IHttpModule を利用すると便利です。 例えば、複数に分散してしまったアプリケーションに対して、ある決まった認証処理を実装させたいとき、簡単に機能を提供することが可能になります。 ここでは、認証されていないユーザーがアクセスしてきたとき、別のサイトへ転送させる機能を提供する HttpModule を作成します。 目次 概要 IHttpModule の 実装 IHttpModule の 利用

machineKey の 生成ツール

.tbl { border-collapse: collapse; } .tbl th, .tbl td { border: 1px solid #dddddd; padding: 0.3em 0.8em; } .tbl th { background-color: #f5f5f5; } .tablealg { width: 12em; } .tabledata { text-align: center; } ASP.NET で開発をしていると、 web.config に machineKey を設定できます。 複数のサーバーにおいて、同じ認証結果を利用したい場合(DNSラウンドロビン等)、各サーバーにおいて共通の machineKey を設定することで、1度の認証で他のサーバーにアクセスできるようなことを実現できます。 この machineKey 、 ...

ASP.NET MVC + Web API で フォーム認証 の実装

"技術的にできる" という実践例として MVC 4 + WebAPI という組み合わせで、 RESTful like なフォーム認証を作る方法を記載します。 MVC だけで実装する フォーム認証 と比べ、実装量が増える デメリット がありますが、操作感が良くなる(リクエスト時に固まるをなくせる)メリットはあると思います。 目次 概要 作成する ファイル、フォルダ 構成 web.config の認証設定 ログイン、ログアウト 処理 ログイン処理 への Ajaxリクエスト ログイン後 の リダイレクト

ASP.NET Web API の ルーティング

.sample { margin-left: 2em; border-collapse: collapse; border: 1px solid #dddddd; } .sample th { border: 1px solid #dddddd; background-color: #f5f5f5; padding: 0.5em 1em; } .sample td { border: 1px solid #dddddd; padding: 0.5em 1em; } ASP.NET Web API における、ルーティング についてまとめます。 WCF と似ているけれど、バインド方法が若干異なるので、注意が必要そうです。 目次 デフォルト設定 (デフォルト の ルーティング) ルーティ ...

ASP.NET Web API における クエリパラメーター と メッセージボディー の バインド

リクエスト時 に設定する クエリパラメーター、 メッセージボディー と、リクエストを受け取った関数の引数 がどのような関係にあるかをまとめます。 具体的には、クエリーパラメーター を 引数 へ バインド する方法と、メッセージボディー から モデルクラス へ バインド する方法 についてのまとめです。 目次 クエリパラメーター と 引数 メッセージボディー と 引数

ASP.NET Web API で DataContract の利用

データコントラクト(DataContract)を利用することで、JSON と C# で作成した クラス との間の シリアライズ、デシリアライズ を自動的に行えるようにします。 ここでは、メッセージボディー に入れられた JSONオブジェクト を C# で作成した モデルクラス へ バインド する方法について記載します。 目次 データコントラクト の実装 データコントラクト を利用した サービス の実装 テスト 実行

ASP.NET Web API で レスポンスヘッダー の設定

Web API を利用していると、簡単に レスポンスヘッダー を調整することができます。 ほとんどは HttpResponseMessage クラス の設定で処理を行います。 以下に、ケース別の具体例を掲載します。 目次 Content-Type の書き換え ステータスコード の書き換え カスタムレスポンスヘッダー Content-Type の書き換え 何も設定しない場合、application/json になるので、ここでは text/plain に設定する例を掲載します。 namespace WebService { using System.Text; using System.Web; using System.Web.Http; public class SampleContro ...

ASP.NET Web API で 独自 フィルター の実装方法

ここでは、 ASP.NET Web API において、独自フィルター を実装する方法を掲載します。 独自フィルター を実装することで、 RESTful アプリケーション内において、ある決まった処理を簡単に実装することができるようになります。 今回は サンプル として「フィルターを実装したアクション(メソッド)のレスポンスをキャッシュさせない」独自フィルターを作成します。

ASP.NET Web API チュートリアル

.monospace { font-family: monospace; } .raw { border: 1px solid #dddddd; background-color: #f5f5f5; padding: 1em 2em; } .parameter { border: 1px solid #dddddd; border-collapse: collapse; } .parameter th { border: 1px solid #dddddd; background-color: #f5f5f5; padding: 0.3em 0.5em; } .parameter td { border: 1px solid #dddddd; padding: 0.3em 0.5em; } ...

クロスドメイン制約 を XmlHttpRequest level 2 で 回避 (プリフライト)

クロスドメイン制約 を 回避 する クライアント & サーバー 実装 を XmlHttpRequest level2 の プリフライト を利用して実現します。 クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。 ここでは、"クライアント側" と "サーバー側" 両方に手を加えて クロスドメイン通信 を実現する方法を載せます。 具体的には、XmlHttpRequest level2 の プリフライト を利用して クロスドメイン通信 を行えるようにします。