Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Simule une API CRUD avec un magasin de données en mémoire. Envoie des réponses JSON. Prend en charge CORS pour l’utilisation inter-domaines à partir d’applications côté client. Si vous le souhaitez, simule les API CRUD sécurisées avec Microsoft Entra.
Définition de l’instance de plug-in
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "customersApi"
}
Exemple de configuration
{
"customersApi": {
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.schema.json",
"apiFile": "customers-api.json"
}
}
Propriétés de configuration
| Propriété | Descriptif |
|---|---|
apiFile |
Chemin d’accès au fichier qui contient la définition de l’API CRUD |
Options de ligne de commande
Aucun
Exemple de fichier API
Voici plusieurs exemples de fichiers API qui définissent une API CRUD pour plus d’informations sur les clients.
API CRUD anonyme
Voici un exemple de fichier API qui définit une API CRUD anonyme pour obtenir des informations sur les clients.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
API CRUD sécurisée avec Microsoft Entra à l’aide d’une seule étendue
Voici un exemple de fichier d’API qui définit une API CRUD pour obtenir des informations sur les clients sécurisés avec Microsoft Entra. Toutes les actions sont sécurisées avec une seule étendue. CrudApiPlugin valide l’audience du jeton, l’émetteur et l’étendue.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com",
"scopes": ["api://contoso.com/user_impersonation"]
},
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
API CRUD sécurisée avec Microsoft Entra à l’aide d’étendues spécifiques
Voici un exemple de fichier d’API qui définit une API CRUD pour obtenir des informations sur les clients sécurisés avec Microsoft Entra. Les actions sont sécurisées avec des étendues spécifiques. CrudApiPlugin valide l’audience du jeton, l’émetteur et l’étendue.
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"auth": "entra",
"entraAuthConfig": {
"audience": "https://api.contoso.com",
"issuer": "https://login.microsoftonline.com/contoso.com"
},
"actions": [
{
"action": "getAll",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.read"]
}
},
{
"action": "create",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "update",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]",
"auth": "entra",
"entraAuthConfig": {
"scopes": ["api://contoso.com/customer.write"]
}
}
]
}
Propriétés du fichier API
| Propriété | Descriptif | Obligatoire |
|---|---|---|
actions |
Liste des actions prises en charge par l’API. | Oui |
auth |
Détermine si l’API est sécurisée ou non. Valeurs autorisées : none, entra.
none par défaut |
Non |
baseUrl |
URL de base où le proxy de développement expose l’URL. Le proxy de développement ajoute l’URL de base aux URL que vous définissez dans les actions. | Oui |
dataFile |
Chemin d’accès au fichier qui contient les données de l’API. | Oui |
entraAuthConfig |
Configuration de l’authentification Microsoft Entra. | Oui, lorsque vous configurez auth sur entra |
Vous pouvez faire référence au dataFile à l’aide d’un chemin absolu ou relatif. Le proxy de développement résout les chemins relatifs relativement au fichier de définition d’API.
Le dataFile doit définir un tableau JSON. Le tableau peut être vide ou contenir un ensemble initial d’objets.
Propriétés EntraAuthConfig
Lorsque vous configurez la propriété auth sur entra, vous devez définir la propriété entraAuthConfig. Si vous ne le définissez pas, CrudApiPlugin affiche un avertissement et l’API est disponible anonymement.
Vous pouvez définir entraAuthConfig sur le fichier API et sur chaque action d’API. Lorsque vous la définissez sur le fichier API, elle s’applique à toutes les actions. Lorsque vous la définissez sur une action, elle remplace la configuration du fichier API pour cette action spécifique.
La propriété entraAuthConfig a les propriétés suivantes.
| Propriété | Descriptif | Obligatoire | Faire défaut |
|---|---|---|---|
audience |
Spécifiez l’audience valide pour le jeton. Lorsqu’il est spécifié, CrudApiPlugin compare l’audience du jeton à ce public. S’ils sont différents, CrudApiPlugin retourne une réponse non autorisée 401. | Non | Aucun |
issuer |
Spécifiez l’émetteur de jeton valide. Lorsqu’il est spécifié, CrudApiPlugin compare l’émetteur du jeton à cet émetteur. S’ils sont différents, CrudApiPlugin retourne une réponse non autorisée 401. | Non | Aucun |
scopes |
Spécifiez le tableau d’étendues valides. Quand elle est spécifiée, CrudApiPlugin contrôle si l’une des étendues est présente sur le jeton. Si aucune des étendues n’est présente, CrudApiPlugin retourne une réponse non autorisée 401. | Non | Aucun |
roles |
Spécifiez le tableau de rôles valides. Lorsqu’il est spécifié, CrudApiPlugin contrôle si l’un des rôles est présent sur le jeton. Si aucun des rôles n’est présent, CrudApiPlugin retourne une réponse non autorisée 401. | Non | Aucun |
validateLifetime |
Définissez la valeur true pour que CrudApiPlugin valide si le jeton n’a pas expiré. Quand CrudApiPlugin détecte un jeton expiré, il retourne une réponse non autorisée 401. |
Non | false |
validateSigningKey |
Définissez la valeur true pour que CrudApiPlugin valide si le jeton est authentique. Lorsque CrudApiPlugin détecte un jeton avec une signature non valide (par exemple, car vous avez modifié le jeton manuellement), il retourne une réponse non autorisée 401. |
Non | false |
Propriétés d’action
Chaque action de la liste actions possède les propriétés suivantes.
| Propriété | Descriptif | Obligatoire | Faire défaut |
|---|---|---|---|
action |
Définit la façon dont le proxy de développement interagit avec les données. Valeurs possibles : getAll, getOne, getMany, create, merge, update, delete. |
Oui | Aucun |
auth |
Détermine si l’action est sécurisée ou non. Valeurs autorisées : none, entra. |
Non | none |
entraAuthConfig |
Configuration de l’authentification Microsoft Entra. | Oui, lorsque vous configurez auth sur entra |
Aucun |
method |
Méthode HTTP utilisée par le proxy de développement pour exposer l’action. | Non | Dépend de l’action |
query |
Newtonsoft JSONPath requête utilisée par le proxy de développement pour rechercher les données dans le fichier de données. | Non | Vide |
url |
URL sur laquelle le proxy de développement expose l’action. Le proxy de développement ajoute l’URL à l’URL de base. | Non | Vide |
L’URL spécifiée dans la propriété url peut contenir des paramètres. Vous définissez des paramètres en encapsulant le nom du paramètre dans les accolades, par exemple, {customer-id}. Lors du routage de la requête, le proxy de développement remplace le paramètre par la valeur de l’URL de la requête.
Vous pouvez utiliser le même paramètre dans la requête. Par exemple, si vous définissez le url en tant que /customers/{customer-id} et le query en tant que $.[?(@.id == {customer-id})], le proxy de développement remplace le paramètre {customer-id} dans la requête par la valeur de l’URL de la requête.
Important
Le proxy de développement implémente JSONPath dans la propriété query à l’aide de Newtonsoft.Json. Il existe certaines limitations pour l’utiliser, par exemple, elle ne prend en charge que des guillemets simples. Avant de soumettre un problème, veillez à valider votre requête.
Lorsque le plug-in ne trouve pas les données dans le fichier de données à l’aide de la requête, elle retourne une réponse 404 Not Found.
Chaque type d’action a une méthode HTTP par défaut. Vous pouvez remplacer la valeur par défaut en spécifiant la propriété method. Par exemple, le type d’action get a une méthode par défaut de GET. Si vous souhaitez utiliser POST à la place, spécifiez la propriété method comme POST.
Le tableau actions a défini une collection d’actions que vous souhaitez simuler. Vous pouvez définir plusieurs actions pour la même méthode HTTP et le même type d’action. Par exemple, vous pouvez définir deux actions getOne, une qui récupère un client par son ID et l’autre par son adresse e-mail. Veillez à définir des URL uniques pour chaque action.
Actions
Le proxy de développement prend en charge les actions suivantes pour les API CRUD.
| Action | Descriptif | Méthode par défaut |
|---|---|---|
getAll |
Retourne tous les éléments du fichier de données. | GET |
getOne |
Retourne un élément unique à partir du fichier de données. Échoue lorsque la requête correspond à plusieurs éléments. | GET |
getMany |
Retourne plusieurs éléments du fichier de données. Retourne un tableau vide si la requête ne correspond à aucun élément. | GET |
create |
Ajoute un nouvel élément à la collection de données. | POST |
merge |
Fusionne les données de la demande avec les données du fichier de données. | PATCH |
update |
Remplace les données dans le fichier de données par les données de la requête. | PUT |
delete |
Supprime l’élément du fichier de données. | DELETE |
Lorsque vous créez un élément à l’aide d’une action de create, le plug-in ne valide pas sa forme et l’ajoute à la collection de données as-is.
Exemple de fichier de données
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]