インターネット経由で CRUD API をシミュレートする
開発プロキシを使用すると、 CRUD API を ビルドしなくてもシミュレートできます。 開発プロキシを使用して API をシミュレートすると、時間を節約し、開発を高速化できます。 API をクラウド サービスと統合する場合は、クラウド サービスがアクセスできるように、インターネット経由で API を公開する必要があります。 Dev Proxy によってシミュレートされた CRUD API をインターネット経由で公開するには、 Dev トンネルを使用します。 この記事では、Dev トンネルを使用してインターネット経由で公開されるように CRUD API を構成する方法について説明します。
ヒント
この記事の CRUD API は、 Northwind データベース Dev Proxy サンプルに基づいています。
インターネット経由で公開されるように CRUD API を構成する
開発プロキシによってシミュレートされた CRUD API をインターネット経由で公開するには、まず CRUD API を構成します。
重要
現時点では、Dev トンネルを使用してインターネット経由でのみ HTTP CRUD API を公開できます。
CRUD API データを定義する
CRUD API をサポートする という名前orders-data.json
のデータ ファイルをCreateします。次に例を示します。
[
{
"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 を構成する
次に、 という名前 orders-api.json
の API 構成ファイルを作成します。ここで、CRUD API URL、その操作、データ ファイルを指定します。 プロパティには必ず HTTP URL を baseUrl
指定してください。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.17.0/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})]"
}
]
}
開発プロキシの構成を定義する
次に、 を有効にして という名前 devproxyrc.json
の Dev Proxy 構成ファイルを CrudApiPlugin
作成します。 CRUD API 用に構成した URL をリッスンするように Dev Proxy を構成します。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.17.0/rc.schema.json",
"plugins": [
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "ordersApi"
}
],
"urlsToWatch": [
"http://api.northwind.com/*"
],
"ordersApi": {
"apiFile": "orders-api.json"
}
}
構成の確認
開発プロキシを実行し、CRUD API に要求を送信して、CRUD API が正しく動作していることを確認します。
現在の作業ディレクトリにある という名前 devproxyrc.json
のファイルに Dev Proxy 構成を保存したと仮定して、Dev Proxy を起動します。
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 をインターネット経由で公開するには、Dev Proxy ポートにマップされた開発トンネルを開始します。 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