Freigeben über


Simulieren einer CRUD-API im Internet

Auf einen Blick
Ziel: Verfügbarmachen der CRUD-API über Dev-Tunnel
Zeit: 15 Minuten
Plugins:CrudApiPlugin
Voraussetzungen:Einrichten von Dev-Proxy, Dev-Tunneln

Dev Proxy ermöglicht es Ihnen, CRUD-APIs zu simulieren , ohne sie erstellen zu müssen. Durch das Simulieren von APIs mit Dev Proxy können Sie Zeit sparen und die Entwicklung beschleunigen. Wenn Sie Ihre API in Clouddienste integrieren, müssen Sie Ihre API über das Internet verfügbar machen, damit der Clouddienst darauf zugreifen kann. Verwenden Sie Dev Tunnels, um eine CRUD-API verfügbar zu machen, die von Dev Proxy im Internet simuliert wird. In diesem Artikel wird erläutert, wie Sie eine CRUD-API konfigurieren, die über das Internet mithilfe von Dev Tunnels verfügbar gemacht werden soll.

Tipp

Die CRUD-API in diesem Artikel basiert auf dem Dev Proxy-Beispiel für die Northwind-Datenbank.

Konfigurieren der CRUD-API, die im Internet verfügbar gemacht werden soll

Um eine VON Dev Proxy im Internet simulierte CRUD-API verfügbar zu machen, konfigurieren Sie zunächst die CRUD-API.

Von Bedeutung

Derzeit können Sie http CRUD-APIs nur über das Internet mithilfe von Dev Tunnels verfügbar machen.

Definieren der CRUD-API-Daten

Erstellen Sie eine Datendatei namens orders-data.json, die die CRUD-API zurückgibt, z. B.:

Datei: 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"
  }
]

Konfigurieren der CRUD-API

Erstellen Sie als Nächstes die API-Konfigurationsdatei namens orders-api.json, in der Sie die CRUD-API-URL, die zugehörigen Vorgänge und die Datendatei angeben. Achten Sie darauf, eine HTTP-URL in der baseUrl Eigenschaft anzugeben:

Datei: orders-api.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/crudapiplugin.apifile.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})]"
    }
  ]
}

Definieren der Dev Proxy-Konfiguration

Erstellen Sie als Nächstes eine Dev Proxy-Konfigurationsdatei mit dem Namen devproxyrc.json und aktivieren Sie CrudApiPlugin. Konfigurieren Sie den Dev-Proxy so, dass er auf die URL horcht, die Sie für Ihre CRUD-API konfiguriert haben.

Datei: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
  "plugins": [
    {
      "name": "CrudApiPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "ordersApi"
    }
  ],
  "urlsToWatch": [
    "http://api.northwind.com/*"
  ],
  "ordersApi": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/crudapiplugin.schema.json",
    "apiFile": "orders-api.json"
  }
}

Überprüfen der Konfiguration

Stellen Sie sicher, dass die CRUD-API ordnungsgemäß funktioniert, indem Sie Dev Proxy ausführen und Anforderungen an die CRUD-API senden.

Starten Sie Dev Proxy, vorausgesetzt, Sie haben die Dev Proxy-Konfiguration in einer Datei gespeichert, die im aktuellen Arbeitsverzeichnis benannt ist devproxyrc.json :

devproxy

Rufen Sie die CRUD-API mit curl auf:

$ 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"
  }
]

Verfügbarmachen der CRUD-API im Internet

Um die CRUD-API im Internet verfügbar zu machen, starten Sie einen Dev-Tunnel, der dem Dev Proxy-Port zugeordnet ist. Konfigurieren Sie den Tunnel für die Verwendung des Hostnamens, der für die CRUD-API konfiguriert ist.

Warnung

Der anonyme Zugriff auf einen Entwicklungstunnel bedeutet, dass jeder im Internet eine Verbindung mit Ihrem lokalen Server herstellen kann, wenn er die Dev-Tunnel-ID erraten kann.

$ 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

Rufen Sie die CRUD-API auf, die von Dev Proxy über einen Entwicklungstunnel mit curl simuliert wird.

$ 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"
  }
]

Siehe auch