開発プロキシを使用すると、CRUD API をビルドしなくても シミュレートできます。 開発プロキシを使用して API をシミュレートすると、時間を節約し、開発を高速化できます。 API をクラウド サービスと統合する場合は、クラウド サービスがアクセスできるように、インターネット経由で API を公開する必要があります。 開発プロキシによってシミュレートされた CRUD API をインターネット経由で公開するには、dev トンネル 使用します。 この記事では、Dev トンネルを使用してインターネット経由で公開されるように CRUD API を構成する方法について説明します。
インターネット経由で公開されるように CRUD API を構成する
開発プロキシによってシミュレートされた CRUD API をインターネット経由で公開するには、まず CRUD API を構成します。
重要
現時点では、Dev トンネルを使用してインターネット経由でのみ HTTP CRUD API を公開できます。
CRUD API データを定義する
CRUD API をサポートするデータ ファイル (orders-data.json
) を作成します。次に例を示します。
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
CRUD API を構成する
次に、CRUD API URL、その操作、データ ファイルを指定する orders-api.json
という名前の API 構成ファイルを作成します。 必ず、baseUrl
プロパティに HTTP URL を指定してください。
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.1/crudapiplugin.schema.json",
"baseUrl": "http://api.northwind.com/orders",
"auth": "none",
"dataFile": "orders-data.json",
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
},
{
"action": "delete",
"url": "/{order-id}",
"query": "$.[?(@.OrderID == {order-id})]"
}
]
}
開発プロキシ構成の定義
次に、CrudApiPlugin
が有効になっている devproxyrc.json
という名前の開発プロキシ構成ファイルを作成します。 CRUD API 用に構成した URL をリッスンするように開発プロキシを構成します。
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.1/rc.schema.json",
"plugins": [
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "ordersApi"
}
],
"urlsToWatch": [
"http://api.northwind.com/*"
],
"ordersApi": {
"apiFile": "orders-api.json"
}
}
構成の確認
開発プロキシを実行し、CRUD API に要求を送信して、CRUD API が正しく動作していることを確認します。
現在の作業ディレクトリの devproxyrc.json
という名前のファイルに開発プロキシ構成を保存したと仮定して、開発プロキシを起動します。
devproxy
curl を使用して CRUD API を呼び出します。
$ curl -x http://127.0.0.1:8000 http://api.northwind.com/orders
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
インターネット経由で CRUD API を公開する
CRUD API をインターネット経由で公開するには、開発プロキシ ポートにマップされた開発トンネルを開始します。 CRUD API 用に構成されたホスト名を使用するようにトンネルを構成します。
警告
開発トンネルへの匿名アクセスを許可すると、インターネット上のすべてのユーザーが、開発トンネル ID を推測できる場合は、ローカル サーバーに接続できます。
$ devtunnel host -p 8000 -a --host-header api.northwind.com
Hosting port: 8000
Connect via browser: https://vpfm55qw.euw.devtunnels.ms:8000, https://vpfm55qw-8000.euw.devtunnels.ms
Inspect network activity: https://vpfm55qw-8000-inspect.euw.devtunnels.ms
Ready to accept connections for tunnel: vpfm55qw
開発プロキシが curl を使用して開発トンネル経由でシミュレートする CRUD API を呼び出します。
$ curl https://vpfm55qw-8000.euw.devtunnels.ms/orders
[
{
"OrderID": 10248,
"CustomerID": "VINET",
"EmployeeID": 5,
"OrderDate": "1996-07-04T00:00:00",
"RequiredDate": "1996-08-01T00:00:00",
"ShippedDate": "1996-07-16T00:00:00",
"ShipVia": 3,
"Freight": 32.38,
"ShipName": "Vins et alcools Chevalier",
"ShipAddress": "59 rue de l'Abbaye",
"ShipCity": "Reims",
"ShipPostalCode": "51100",
"ShipCountry": "France"
},
{
"OrderID": 10249,
"CustomerID": "TOMSP",
"EmployeeID": 6,
"OrderDate": "1996-07-05T00:00:00",
"RequiredDate": "1996-08-16T00:00:00",
"ShippedDate": "1996-07-10T00:00:00",
"ShipVia": 1,
"Freight": 11.61,
"ShipName": "Toms Spezialitäten",
"ShipAddress": "Luisenstr. 48",
"ShipCity": "Münster",
"ShipPostalCode": "44087",
"ShipCountry": "Germany"
}
]
Dev Proxy