今回は「OpenAPI Specification の使い方」についてまとめます。
OpenAPIに触れるとでてくる Swagger についても、位置づけや役割もあわせてまとめています。
目次
概要
OpenAPI とは
Swagger とは
データ型
基本構造
スキーマ詳細
info
servers
tags
paths
パス、メソッド、操作
リクエストパラメーター
リクエストボディー
...
ラベル Web API の投稿を表示しています。 すべての投稿を表示
Swagger Codegen の使い方
今回は「Swagger Codegen の使い方」についてまとめます。
インストールからソースコード生成、動作確認までの一連操作を自PC上で行う場合の手順をまとめています。
目次
Swagger Codegen とは
インストール
コード生成
生成したサーバーサイドコードの動作確認
Swagger Codegen とは
Swagger Codegen とは「OpenAPI Specificatioinに従って記述されたAPI仕様書を元に、ソースコードを生成するツール」です。
Swagger Editor, UI とともによく使われるツールになります。
Web上で出力もできますし、Dockerを利用した出力方法もありますが…今回は純粋に自端末で出力する方法をまとめます ...
Akinari Tsugo
18:37
REST,
Web API
Swagger UI の使い方
今回は「Swagger UI の使い方」についてまとめます。
目次
Swagger UI とは
基本的な使い方
Node.js + Express サーバー上に展開
サーバーの実装
サーバーの起動
動作確認
初期表示のカスタマイズ
自身のAPI仕様を表示
ヘッダーを非表示
(おまけ)最終的な構成
Swagger UI とは
Swagger UI とは「OpenAPI Specificatioinに従って記述されたAPI仕様書をWebページ上で見やすく表示するツール ...
Akinari Tsugo
18:36
REST,
Web API
JSON Web Token (JWT) の 仕様 と 使い方
今回は「JSON Web Token」についてまとめます。
目次
概要
仕様
構造
ヘッダー
ペイロード
署名
使い方
注意点
概要
JSON Web Token は略して JWT (ジョット) と呼びます。
「セッション情報をサーバーサイドで保存せずクライアントサイドで保持できる(ステートレスが実現できる)」点が特徴です。
WebAPIとか作るときは便利な仕様です。
JWTの仕様(= トークンの仕様)自体はシンプルですし、使い方も簡単です。
ただ…使い方を間違えると脆弱性ができてしまうので、使い方には要注意です。
仕様
...
Akinari Tsugo
0:28
JavaScript,
Web API,
セキュリティ
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にリクエストしたときの動きのイメージは以下のようなものです。
実装
今 ...
Akinari Tsugo
18:09
Express,
Node.js,
Web API
ASP.NET で 承認 (Authorization) を 制御する 方法
最近の Webアプリケーション であれば ユーザー認証 を必要とするサイトが普通かと思います。
ユーザー認証の仕組みを作るのと同じように必要となるのがコンテンツに対するアクセス制御です。
ここでは コンテンツに対するアクセス制御 の具体的な実装例をまとめます。
目次
概要
web.config で 制御する 方法
属性 で 制御する 方法
概要
ユーザー認証が終わると、続いてコンテンツにアクセスして良いかどうかの判断(承認)が行われます。
以下では承認の方法別メリット・デメリットおよび一般的な実装概念について述べます。
手法別メリット・デメリット
具体的なアクセス制御方法ですが、ASP.NET の 承認制御 は 「web.config を用いた方法」 と 「ソースコードに属性として記述する方法」 の2パターンがあります。
それぞれのメ ...
Akinari Tsugo
18:27
ASP.NET,
C#,
MVC,
Web API
WebAPI + HTML + JavaScript において ファイル を ドラッグ&ドロップ で アップロード する 方法
よくある Webページ上に ファイル を ドラッグ & ドロップ して アップロード する アプリ を作ってみます。
この記事では サーバー側 と クライアント側 をまとめて掲載しています。
サーバー側は ASP.NET WebAPI、クライアント側は HTML + JavaScript で実装します。
アップロード は POST で フォームデータ として アップロード します。
目次
サーバー処理
クライアント処理
HTML
CSS
JavaScript
サンプルコード
GitHub - garafu / samplecode_FileUpload
ダウンロード zip
サーバー処理
WebAPI 用 の コントローラ を作成します。
受け取る ファイルデータ ...
Akinari Tsugo
23:41
C#,
HTML,
JavaScript,
jQuery,
Web API
ASP.NET で 認証 に 関する オブジェクト の関係
ASP.NET で認証に関する オブジェクト をクラス図に書き出してみました。
後半では、認証に関するオブジェクトのちょっとした使い方を記載しています。
目次
認証に関するオブジェクトのクラス図
認証されたかどうかを検出する
認証されたことを登録する
Akinari Tsugo
23:33
ASP.NET,
C#,
IIS,
MVC,
WCF,
Web API
ASP.NET の IHttpModule の 実装 と 利用
ASP.NET アプリケーション に対して モジュール化 された複雑な機能、処理を提供したい場合、 IHttpModule を利用すると便利です。
例えば、複数に分散してしまったアプリケーションに対して、ある決まった認証処理を実装させたいとき、簡単に機能を提供することが可能になります。
ここでは、認証されていないユーザーがアクセスしてきたとき、別のサイトへ転送させる機能を提供する HttpModule を作成します。
目次
概要
IHttpModule の 実装
IHttpModule の 利用
Akinari Tsugo
19:04
ASP.NET,
C#,
MVC,
WCF,
Web API
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 、 ...
Akinari Tsugo
18:29
ASP.NET,
C#,
MVC,
WCF,
Web API
ASP.NET MVC + Web API で フォーム認証 の実装
"技術的にできる" という実践例として MVC 4 + WebAPI という組み合わせで、 RESTful like なフォーム認証を作る方法を記載します。
MVC だけで実装する フォーム認証 と比べ、実装量が増える デメリット がありますが、操作感が良くなる(リクエスト時に固まるをなくせる)メリットはあると思います。
目次
概要
作成する ファイル、フォルダ 構成
web.config の認証設定
ログイン、ログアウト 処理
ログイン処理 への Ajaxリクエスト
ログイン後 の リダイレクト
Akinari Tsugo
22:46
ASP.NET,
C#,
MVC,
Web API
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 と似ているけれど、バインド方法が若干異なるので、注意が必要そうです。
目次
デフォルト設定 (デフォルト の ルーティング)
ルーティ ...
Akinari Tsugo
20:57
ASP.NET,
C#,
Web API
ASP.NET Web API における クエリパラメーター と メッセージボディー の バインド
リクエスト時 に設定する クエリパラメーター、 メッセージボディー と、リクエストを受け取った関数の引数 がどのような関係にあるかをまとめます。
具体的には、クエリーパラメーター を 引数 へ バインド する方法と、メッセージボディー から モデルクラス へ バインド する方法 についてのまとめです。
目次
クエリパラメーター と 引数
メッセージボディー と 引数
Akinari Tsugo
20:28
ASP.NET,
C#,
Web API
ASP.NET Web API で DataContract の利用
データコントラクト(DataContract)を利用することで、JSON と C# で作成した クラス との間の シリアライズ、デシリアライズ を自動的に行えるようにします。
ここでは、メッセージボディー に入れられた JSONオブジェクト を C# で作成した モデルクラス へ バインド する方法について記載します。
目次
データコントラクト の実装
データコントラクト を利用した サービス の実装
テスト 実行
Akinari Tsugo
20:28
ASP.NET,
C#,
Web API
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 ...
Akinari Tsugo
14:34
ASP.NET,
C#,
Web API
ASP.NET Web API で 独自 フィルター の実装方法
ここでは、 ASP.NET Web API において、独自フィルター を実装する方法を掲載します。
独自フィルター を実装することで、 RESTful アプリケーション内において、ある決まった処理を簡単に実装することができるようになります。
今回は サンプル として「フィルターを実装したアクション(メソッド)のレスポンスをキャッシュさせない」独自フィルターを作成します。
Akinari Tsugo
22:01
ASP.NET,
C#,
Web API
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;
}
...
Akinari Tsugo
14:33
ASP.NET,
C#,
Web API
クロスドメイン制約 を XmlHttpRequest level 2 で 回避 (プリフライト)
クロスドメイン制約 を 回避 する クライアント & サーバー 実装 を XmlHttpRequest level2 の プリフライト を利用して実現します。
クロスドメイン通信 を実現するには "サーバー側" と "クライアント側" の2カ所に対して手を入れる必要があるかどうか考えます。
ここでは、"クライアント側" と "サーバー側" 両方に手を加えて クロスドメイン通信 を実現する方法を載せます。
具体的には、XmlHttpRequest level2 の プリフライト を利用して クロスドメイン通信 を行えるようにします。
Akinari Tsugo
0:03
ASP.NET,
C#,
Web API,
クロスドメイン通信