Имитация API CRUD через Интернет
Прокси-сервер разработки позволяет моделировать API-интерфейсы CRUD без необходимости их сборки. Имитация API с помощью прокси-сервера разработки позволяет сэкономить время и ускорить разработку. При интеграции API с облачными службами необходимо предоставить api через Интернет, чтобы облачная служба получите к нему доступ. Чтобы предоставить API CRUD, имитированный прокси-сервером разработки, через Интернет, используйте Туннели разработки. В этой статье объясняется, как настроить API CRUD для предоставления доступа через Интернет с помощью Туннелей разработки.
Совет
API CRUD в этой статье основан на примере прокси-сервера разработки базы данных Northwind.
Настройка API CRUD для предоставления доступа через Интернет
Чтобы предоставить API CRUD, имитированный прокси-сервером разработки, через Интернет, начните с настройки API CRUD.
Важно!
На данный момент с помощью Туннелей разработки можно предоставлять только API-интерфейсы HTTP CRUD через Интернет.
Определение данных API CRUD
Create файл данных с именем orders-data.json
, который поддерживает API CRUD, например:
[
{
"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"
}
]
Настройка API CRUD
Затем создайте файл конфигурации API с именем orders-api.json
, в котором укажите URL-адрес API CRUD, его операции и файл данных. Обязательно укажите URL-адрес HTTP в свойстве 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})]"
}
]
}
Определение конфигурации прокси-сервера разработки
Затем создайте файл конфигурации Dev Proxy с именем devproxyrc.json
с включенным CrudApiPlugin
. Настройте прокси-сервер разработки для прослушивания URL-адреса, настроенного для API CRUD:
{
"$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"
}
}
Проверка конфигурации
Убедитесь, что API CRUD работает правильно, запустив прокси-сервер разработки и отправив запросы в API CRUD.
Запустите прокси-сервер разработки, если вы сохранили конфигурацию прокси-сервера разработки в файле с именем devproxyrc.json
в текущем рабочем каталоге:
devproxy
ВызовИТЕ API CRUD с помощью curl:
$ 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"
}
]
Предоставление API CRUD через Интернет
Чтобы предоставить API CRUD через Интернет, запустите туннель разработки, сопоставленный с портом прокси-сервера разработки. Настройте туннель для использования имени узла, настроенного для API CRUD.
Предупреждение
Разрешение анонимного доступа к туннелю разработки означает, что любой пользователь в Интернете может подключиться к локальному серверу, если он может угадать идентификатор туннеля разработки.
$ 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
Вызовите API CRUD, который имитирует прокси-сервер разработки с помощью туннеля разработки с помощью curl:
$ 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"
}
]