Fichiers
L’API d’administration IIS fournit un ensemble d’API de fichiers pour interagir directement avec le système de fichiers. Cela signifie que l’API peut être utilisée localement ou à distance pour déployer du contenu, apporter des modifications ou case activée si les fichiers sont à jour.
Le point de terminaison /api/files expose les métadonnées et le contenu des fichiers et répertoires sur l’ordinateur. Les fichiers disponibles via cette API sont limités à ceux spécifiés dans la section configuration des fichiers du fichier appsettings.json . L’interrogation du point de terminaison /api/files sans spécifier de répertoire répertorie les emplacements présents dans la configuration. Ces emplacements représentent la racine de tous les chemins de système de fichiers disponibles via l’API. Les fichiers peuvent être créés, supprimés et manipulés avec les verbes http standard post, delete et patch tant que le chemin du fichier contient les revendications nécessaires pour effectuer l’opération.
Fichier
{
"name": "iisstart.png",
"id": "{id}",
"type": "file",
"physical_path": "C:\\inetpub\\wwwroot\\iisstart.png",
"exists": "true",
"size": "98757",
"created": "2017-01-09T18:08:33.5130112Z",
"last_modified": "2017-01-09T17:48:13.6180477Z",
"last_access": "2017-01-09T17:48:13.6180477Z",
"e_tag": "1d26aa08c67ed45",
"parent": {
"name": "wwwroot",
"id": "{id}",
"type": "directory",
"physical_path": "C:\\inetpub\\wwwroot"
},
"claims": [
"read",
"write"
]
}
Répertoire
{
"name": "wwwroot",
"id": "{id}",
"type": "directory",
"physical_path": "C:\\inetpub\\wwwroot",
"exists": "true",
"created": "2017-01-09T18:08:33.1380257Z",
"last_modified": "2017-01-30T17:01:15.2619212Z",
"last_access": "2017-01-30T17:01:15.2619212Z",
"total_files": "7",
"parent": {
"name": "inetpub",
"id": "a-nA1LZCBZ9jIqxr6e2uWg",
"type": "directory",
"physical_path": "C:\\inetpub"
},
"claims": [
"read",
"write"
]
}
Le point de terminaison /api/webserver/files expose la structure de fichiers virtuels créée par IIS. Toutes les ressources de fichiers sous ce point de terminaison appartiennent à un site web et le chemin d’accès de ce fichier est relatif au site web auquel il appartient. Cela permet aux sites web d’être traités comme la racine du système de fichiers, ce qui est souhaitable dans les scénarios de serveur web. Les répertoires virtuels sont inclus parmi les répertoires normaux pour une vue complète de la hiérarchie de fichiers virtuels d’un site web.
Tous les fichiers de serveur web ont une référence à un file_info qui est les métadonnées de fichier qui peuvent être obtenues à partir du point de terminaison /api/files .
Fichier web
{
"name": "iisstart.png",
"id": "{id}",
"type": "file",
"path": "/iisstart.png",
"parent": {
"name": "",
"id": "{id}",
"type": "application",
"path": "/"
},
"website": {
"name": "Default Web Site",
"id": "{id}",
"status": "started"
},
"file_info": {
"name": "iisstart.png",
"id": "{id}",
"type": "file",
"physical_path": "C:\\inetpub\\wwwroot\\iisstart.png"
}
}
Répertoire web
{
"name": "imgs",
"id": "{id}",
"type": "directory",
"path": "/imgs",
"parent": {
"name": "",
"id": "{id}",
"type": "application",
"path": "/"
},
"website": {
"name": "Default Web Site",
"id": "{id}",
"status": "started"
},
"file_info": {
"name": "imgs",
"id": "{id}",
"type": "directory",
"physical_path": "C:\\inetpub\\wwwroot\\imgs"
}
}
L’API prend en charge la copie et le déplacement de fichiers via les points de terminaison /api/files/copy et /api/files/move . Le processus de copie d’un fichier est effectué en exécutant une requête POST vers l’API qui décrit l’opération de copie souhaitée.
POST
{
"name":"{optional name of the destination file}",
"file": {
"id": "{id property of the file to copy}"
},
"parent": {
"id": "{id property of the directory to copy to}"
}
}
Les ressources sous la route /api/files contiennent uniquement des métadonnées pour les fichiers. Pour manipuler le contenu d’un fichier, vous devez utiliser la route /api/files/content/{id} . Cet itinéraire utilise le type de contenu application/octet-stream pour la transmission de données. L’exécution d’une requête GET à l’URL de contenu d’un fichier retreint les octets bruts du fichier. Cette opération prend en charge les requêtes de plage HTTP afin que le fichier puisse être téléchargé en blocs. L’exécution d’une demande PUT à l’URL de contenu du fichier remplace le contenu du fichier par le corps de la demande. Cette opération prend en charge les requêtes de plage de contenu HTTP pour activer la manipulation d’accès aléatoire des fichiers.
Télécharger le 2e 500 octets d’un fichier
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
Modifier le 2e 500 octets d’un fichier de 1 000 octets
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
Les fichiers peuvent être téléchargés via le point de terminaison /api/files/content de l’API. L’inconvénient de ce point de terminaison est que, comme il se trouve sous la route de l’API , il nécessite un jeton d’accès. Cela signifie que le fichier ne peut pas être téléchargé via un navigateur. Le point de terminaison /api/files/download permet la création de liens de téléchargement temporaires. Ces liens de téléchargement sont uniques, générés de manière aléatoire et ne nécessitent pas de jeton d’accès. Les liens de téléchargement générés prennent la forme de /downloads/{random_sequence}. Un paramètre facultatif de durée de vie (ttl) est disponible lors de la génération d’un lien de téléchargement pour spécifier la durée pendant laquelle le lien de téléchargement doit être disponible. La valeur par défaut est cinq secondes.
Lorsqu’un téléchargement est généré, le lien pour le téléchargement est retourné dans l’en-tête Location de la réponse HTTP.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
L’API fichiers peut être utilisée pour gérer des fichiers situés sur des partages de fichiers. Pour activer cette fonctionnalité, le partage de fichiers doit autoriser les autorisations de système de fichiers nécessaires au principal représentant l’ordinateur sur lequel l’API s’exécute. Par exemple, supposons que le contenu partagé se trouve dans \\share\images et que nous voulons autoriser une API s’exécutant sur un serveur web nommé web-prod-1 à énumérer ces fichiers. Pour cela, un administrateur doit modifier la liste de contrôle d’accès du répertoire \\share\images afin d’autoriser l’accès en lecture à l’objet Active Directory web-prod-1 . Une fois cette opération effectuée, le service sur l’ordinateur web-prod-1 sera en mesure d’accéder à ce répertoire, de lire les fichiers, puis de les exposer via l’API.
L’accès au système de fichiers de l’API est limité à un ensemble de dossiers racine, appelés emplacements, spécifiés dans le fichier appsettings . Ces emplacements apparaissent en tant que racines du point de vue de l’API de fichier, mais sur le lecteur physique, ils peuvent être des dossiers imbriqués, la racine d’un lecteur ou même un partage réseau. Pour chaque emplacement, l’accès en lecture et en écriture est contrôlé indépendamment. Les chemins d’accès du système de fichiers qui ne se trouvent pas dans un emplacement ne seront pas vus par l’API du système de fichiers.
À compter de la version 2.2.0, les paramètres d’emplacement sont accessibles via le point de terminaison /api/files/locations . Ce point de terminaison est verrouillé pour les utilisateurs du groupe d’utilisateurs propriétaires de l’API. Cela signifie que l’authentification Windows est nécessaire pour accéder au point de terminaison d’emplacements. L’ajout ou la suppression d’emplacements ajoute ou supprime l’accès au système de fichiers de l’API. Ce point de terminaison prend en charge GET, PATCH, POST et DELETE pour la création, la modification et la suppression d’emplacements existants. La modification des emplacements n’a aucun effet sur les fichiers physiques, elle manipule uniquement la vue de l’API du système de fichiers.
Configuration des emplacements par défaut
{
"locations": [
{
"alias": "inetpub",
"id": "{id}",
"path": "C:\\inetpub",
"claims": [
"read"
]
}
]
}