Partager via


Simuler une API CRUD sur Internet

Dev Proxy vous permet de simuler des API CRUD sans avoir à les générer. La simulation d’API à l’aide du proxy de développement vous permet de gagner du temps et d’accélérer le développement. Lorsque vous intégrez votre API à des services cloud, vous devez exposer votre API sur Internet afin que le service cloud puisse y accéder. Pour exposer une API CRUD simulée par proxy de développement sur Internet, utilisez Dev Tunnels. Cet article explique comment configurer une API CRUD pour qu’elle soit exposée sur Internet à l’aide de Dev Tunnels.

Conseil

L’API CRUD de cet article est basée sur l’exemple de proxy de développement de base de données Northwind.

Configurer l’API CRUD pour qu’elle soit exposée sur Internet

Pour exposer une API CRUD simulée par un proxy de développement sur Internet, commencez par configurer l’API CRUD.

Important

À l’heure actuelle, vous pouvez uniquement exposer les API HTTP CRUD sur Internet à l’aide de Dev Tunnels.

Définir les données de l’API CRUD

Create un fichier de données, nommé orders-data.json, qui sauvegarde l’API CRUD, par exemple :

[
  {
    "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"
  }
]

Configurer l’API CRUD

Ensuite, créez le fichier de configuration de l’API nommé orders-api.json, où vous spécifiez l’URL de l’API CRUD, ses opérations et le fichier de données. Veillez à spécifier une URL HTTP dans la baseUrl propriété :

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

Définir la configuration du proxy de développement

Ensuite, créez un fichier de configuration de proxy de développement nommé devproxyrc.json avec activé CrudApiPlugin . Configurez le proxy de développement pour écouter l’URL que vous avez configurée pour votre 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"
  }
}

Vérifier la configuration

Vérifiez que l’API CRUD fonctionne correctement en exécutant dev Proxy et en envoyant des requêtes à l’API CRUD.

Démarrez le proxy de développement, en supposant que vous avez enregistré la configuration du proxy de développement dans un fichier nommé devproxyrc.json dans le répertoire de travail actuel :

devproxy

Appelez l’API CRUD à l’aide de 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"
  }
]

Exposer l’API CRUD sur Internet

Pour exposer l’API CRUD sur Internet, démarrez un tunnel de développement mappé au port proxy de développement. Configurez le tunnel pour utiliser le nom d’hôte configuré pour l’API CRUD.

Avertissement

L’autorisation de l’accès anonyme à un tunnel de développement signifie que toute personne sur Internet est en mesure de se connecter à votre serveur local, s’il peut deviner l’ID du tunnel de développement.

$ 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

Appelez l’API CRUD que le proxy de développement simule via un tunnel de développement à l’aide de 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"
  }
]