CrudApiPlugin
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 des API CRUD sécurisées avec Microsoft Entra.
Définition de instance de plug-in
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
"configSection": "customersApi"
}
Exemple de configuration
{
"customersApi": {
"apiFile": "customers-api.json"
}
}
Propriétés de configuration
Propriété | Description |
---|---|
apiFile |
Chemin du fichier qui contient la définition de l’API CRUD |
Options de ligne de commande
None
Exemple de fichier API
Voici plusieurs exemples de fichiers API qui définissent une API CRUD pour obtenir des 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/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.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 étendue unique
Voici un exemple de fichier 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 de jeton, l’émetteur et l’étendue.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.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 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 de jeton, l’émetteur et l’étendue.
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.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é | Description | Obligatoire |
---|---|---|
actions |
Liste des actions prises en charge par l’API. | Yes |
auth |
Détermine si l’API est sécurisée ou non. Valeurs autorisées : none , entra . Par défaut none |
No |
baseUrl |
URL de base dans laquelle 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. | Yes |
dataFile |
Chemin d’accès au fichier qui contient les données de l’API. | Yes |
entraAuthConfig |
Configuration pour l’authentification Microsoft Entra. | Oui, lorsque vous configurez auth pour entra |
Vous pouvez faire référence au à l’aide dataFile
d’un chemin d’accès absolu ou relatif. Le proxy de développement résout les chemins relatifs relativement au fichier de définition d’API.
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 auth
propriété sur entra
, vous devez définir la entraAuthConfig
propriété . Si vous ne le définissez pas, CrudApiPlugin affiche un avertissement et l’API est disponible de manière anonyme.
Vous pouvez définir entraAuthConfig
sur le fichier API et sur chaque action d’API. Lorsque vous le définissez dans le fichier API, il s’applique à toutes les actions. Lorsque vous le définissez sur une action, il remplace la configuration du fichier API pour cette action spécifique.
La entraAuthConfig
propriété possède les propriétés suivantes.
Propriété | Description | Obligatoire | Default |
---|---|---|---|
audience |
Spécifiez l’audience valide pour le jeton. Lorsqu’il est spécifié, CrudApiPlugin compare l’audience du jeton à cette audience. S’ils sont différents, CrudApiPlugin retourne une réponse non autorisée 401. | Non | None |
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 | None |
scopes |
Spécifiez le tableau d’étendues valides. Lorsqu’il est spécifié, 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 | None |
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 | None |
validateLifetime |
Définissez sur true pour que le CrudApiPlugin vérifie si le jeton n’a pas expiré. Lorsque CrudApiPlugin détecte un jeton expiré, il retourne une réponse non autorisée 401. |
No | false |
validateSigningKey |
Définissez sur true pour que le CrudApiPlugin valide si le jeton est authentique. Lorsque CrudApiPlugin détecte un jeton avec une signature non valide (par exemple, parce que vous avez modifié le jeton manuellement), il retourne une réponse non autorisée 401. |
No | false |
Propriétés des actions
Chaque action de la actions
liste a les propriétés suivantes.
Propriété | Description | Obligatoire | Default |
---|---|---|---|
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 | None |
auth |
Détermine si l’action est sécurisée ou non. Valeurs autorisées : none , entra . |
No | none |
entraAuthConfig |
Configuration pour l’authentification Microsoft Entra. | Oui, lorsque vous configurez auth sur entra |
None |
method |
Méthode HTTP utilisée par dev Proxy pour exposer l’action. | No | Dépend de l’action |
query |
Requête JsonPath Newtonsoft que le proxy de développement utilise pour rechercher les données dans le fichier de données. | No | Vide |
url |
URL sur laquelle le proxy de développement expose l’action. Dev Proxy ajoute l’URL à l’URL de base. | No | Vide |
L’URL spécifiée dans la url
propriété peut contenir des paramètres. Vous définissez des paramètres en encapsulant le nom du paramètre dans des 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 comme /customers/{customer-id}
url
et query
comme $.[?(@.id == {customer-id})]
, le proxy de développement remplace le {customer-id}
paramètre dans la requête par la valeur de l’URL de la requête.
Important
Dev Proxy implémente JSONPath dans la propriété à l’aide query
de Newtonsoft.Json. Il existe certaines limitations à son utilisation, telles qu’il 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, il retourne une 404 Not Found
réponse.
Chaque type d’action a une méthode HTTP par défaut. Vous pouvez remplacer la valeur par défaut en spécifiant la method
propriété . Par exemple, le get
type d’action a une méthode par défaut de GET
. Si vous souhaitez utiliser POST
à la place, spécifiez la method
propriété en tant que POST
.
Le actions
tableau 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 getOne
actions, l’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
Dev Proxy prend en charge les actions suivantes pour les API CRUD.
Action | Description | Default (méthode) |
---|---|---|
getAll |
Retourne tous les éléments du fichier de données. | GET |
getOne |
Retourne un seul élément 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 du fichier de données par les données de la demande. | PUT |
delete |
Supprime l’élément du fichier de données. | DELETE |
Lorsque vous créez un élément à l’aide d’une create
action, le plug-in ne valide pas sa forme et l’ajoute à la collection de données telle quelle.
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"
}
]