Symulowanie interfejsu API CRUD przez Internet
Serwer proxy deweloperski umożliwia symulowanie interfejsów API CRUD bez konieczności ich kompilowania. Symulowanie interfejsów API przy użyciu serwera proxy deweloperskiego pozwala zaoszczędzić czas i przyspieszyć programowanie. Po zintegrowaniu interfejsu API z usługami w chmurze należy uwidocznić interfejs API w Internecie, aby usługa w chmurze mogła uzyskać do niego dostęp. Aby udostępnić w Internecie interfejs API CRUD symulowany przez Dev Proxy, użyj Dev Tunnels. W tym artykule wyjaśniono, jak skonfigurować interfejs API CRUD do uwidocznienia w Internecie przy użyciu tuneli deweloperskich.
Napiwek
Interfejs API CRUD w tym artykule jest oparty na przykładowej northwind database Dev Proxy.
Skonfiguruj interfejs API CRUD do udostępnienia w internecie
Aby udostępnić w Internecie symulowany przez Dev Proxy interfejs API CRUD, zacznij od skonfigurowania tego interfejsu.
Ważny
W tej chwili można udostępniać interfejsy API CRUD dla protokołu HTTP tylko w Internecie przy użyciu tuneli deweloperskich.
Definiowanie danych interfejsu API CRUD
Utwórz plik danych o nazwie orders-data.json
, który wspiera interfejs API CRUD, na przykład:
[
{
"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"
}
]
Konfigurowanie interfejsu API CRUD
Następnie utwórz plik konfiguracji interfejsu API o nazwie orders-api.json
, w którym określisz adres URL interfejsu API CRUD, jego operacje i plik danych. Pamiętaj, aby określić adres URL HTTP we właściwości baseUrl
:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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})]"
}
]
}
Definiowanie konfiguracji serwera proxy deweloperskiego
Następnie utwórz plik konfiguracji serwera proxy dev o nazwie devproxyrc.json
z włączonym CrudApiPlugin
. Skonfiguruj Dev Proxy, aby nasłuchiwał adresu URL, który skonfigurowałeś dla interfejsu API CRUD.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.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"
}
}
Weryfikowanie konfiguracji
Sprawdź, czy interfejs API CRUD działa prawidłowo, uruchamiając serwer proxy deweloperów i wysyłając żądania do interfejsu API CRUD.
Uruchom serwer proxy deweloperów, zakładając, że konfiguracja serwera proxy deweloperów została zapisana w pliku o nazwie devproxyrc.json
w bieżącym katalogu roboczym:
devproxy
Wywołaj interfejs API CRUD przy użyciu narzędzia 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"
}
]
Uwidacznianie interfejsu API CRUD w Internecie
Aby udostępnić interfejs API CRUD w internecie, uruchom tunel deweloperski zamapowany na port Dev Proxy. Skonfiguruj tunel tak, aby używał nazwy hosta skonfigurowanej dla interfejsu API CRUD.
Ostrzeżenie
Zezwolenie na anonimowy dostęp do tunelu deweloperskiego oznacza, że każda osoba w Internecie może nawiązać połączenie z serwerem lokalnym, jeśli może odgadnąć identyfikator tunelu deweloperskiego.
$ 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
Wywołaj API CRUD, które Dev Proxy symuluje przez tunel deweloperski, używając 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"
}
]