Files
Die IIS-Verwaltungs-API stellt eine Reihe von Datei-APIs bereit, um direkt mit dem Dateisystem zu interagieren. Dies bedeutet, dass die API lokal oder remote verwendet werden kann, um Inhalte bereitzustellen, Änderungen vorzunehmen oder zu überprüfen, ob Dateien auf dem neuesten Stand sind.
Der Endpunkt /api/files macht die Metadaten und den Inhalt von Dateien und Verzeichnissen auf dem Computer verfügbar. Die über diese API verfügbaren Dateien sind auf die dateien beschränkt, die im Dateikonfigurationsabschnitt der Datei appsettings.json angegeben sind. Wenn Sie den Endpunkt /api/files abfragen, ohne ein Verzeichnis anzugeben, werden die in der Konfiguration vorhandenen Speicherorte aufgelistet. Diese Speicherorte stellen den Stamm aller Dateisystempfade dar, die über die API verfügbar sind. Dateien können mit den standardmäßigen HTTP-Post-, Delete- und Patchverben erstellt, gelöscht und bearbeitet werden, solange der Dateipfad über die zum Ausführen des Vorgangs erforderlichen Ansprüche verfügt.
Datei
{
"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"
]
}
Verzeichnis
{
"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"
]
}
Der Endpunkt /api/webserver/files macht die von IIS erstellte virtuelle Dateistruktur verfügbar. Alle Dateiressourcen unter diesem Endpunkt gehören zu einer Website, und der Pfad dieser Datei ist relativ zu der Website, zu der sie gehört. Dadurch können Websites als Dateisystemstamm behandelt werden, was in Webserverszenarien wünschenswert ist. Virtuelle Verzeichnisse gehören zu den normalen Verzeichnissen für eine vollständige Ansicht der virtuellen Dateihierarchie einer Website.
Alle Webserverdateien verfügen über einen Verweis auf einen file_info bei dem es sich um die Dateimetadaten handelt, die vom Endpunkt /api/files abgerufen werden können.
Webdatei
{
"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"
}
}
Webverzeichnis
{
"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"
}
}
Die API unterstützt das Kopieren und Verschieben von Dateien über die Endpunkte /api/files/copy und /api/files/move . Das Kopieren einer Datei erfolgt durch Ausführen einer POST-Anforderung an die API, die den gewünschten Kopiervorgang beschreibt.
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}"
}
}
Die Ressourcen unter der Route /api/files enthalten nur Metadaten für Dateien. Um den Inhalt einer Datei zu bearbeiten, muss die Route /api/files/content/{id} verwendet werden. Diese Route verwendet den Inhaltstyp application/octet-stream zum Übertragen von Daten. Wenn Sie eine GET-Anforderung an die Inhalts-URL einer Datei ausführen, werden die unformatierten Bytes der Datei erneut verwendet. Dieser Vorgang unterstützt HTTP-Bereichsanforderungen, sodass die Datei in Blöcken heruntergeladen werden kann. Wenn Sie eine PUT-Anforderung an die Inhalts-URL der Datei ausführen, wird der Inhalt der Datei durch den Anforderungstext ersetzt. Dieser Vorgang unterstützt HTTP-Inhaltsbereichsanforderungen, um die zufällige Zugriffsbearbeitung von Dateien zu ermöglichen.
Herunterladen von 2. 500 Bytes einer Datei
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
Bearbeiten von 2. 500 Bytes einer 1000-Byte-Datei
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
Dateien können über den Endpunkt /api/files/content der API heruntergeladen werden. Der Nachteil dieses Endpunkts besteht darin, dass ein Zugriffstoken erforderlich ist, da er sich unter der API-Route befindet. Dies bedeutet, dass die Datei nicht über einen Browser heruntergeladen werden kann. Der Endpunkt /api/files/download ermöglicht die Erstellung temporärer Downloadlinks. Diese Downloadlinks sind eindeutig, zufällig generiert und erfordern kein Zugriffstoken. Generierte Downloadlinks haben die Form /downloads/{random_sequence}. Ein optionaler ttl-Parameter (Time-to-Live) ist verfügbar, wenn Sie einen Downloadlink generieren, um anzugeben, wie lange der Downloadlink verfügbar sein soll. Der Standardwert beträgt fünf Sekunden.
Wenn ein Download generiert wird, wird der Link für den Download im Location-Header der HTTP-Antwort zurückgegeben.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
Die Datei-API kann verwendet werden, um Dateien zu verwalten, die sich auf Dateifreigaben befinden. Um diese Funktionalität zu aktivieren, muss die Dateifreigabe die erforderlichen Dateisystemberechtigungen für den Prinzipal zulassen, der den Computer darstellt, auf dem die API ausgeführt wird. Angenommen, es gibt freigegebene Inhalte unter \\freigabe\images , und wir möchten zulassen, dass eine API, die auf einem Webserver namens web-prod-1 ausgeführt wird, diese Dateien auflisten kann. Um dies zuzulassen, muss ein Administrator die ACL des Verzeichnisses \\share\images so ändern, dass read-Zugriff auf das Active Directory-Objekt web-prod-1 zugelassen wird. Sobald dies geschehen ist, kann der Dienst auf dem Web-prod-1-Computer auf dieses Verzeichnis zugreifen, die Dateien lesen und sie dann über die API verfügbar machen.
Der Dateisystemzugriff der API ist auf einen Satz von Stammordnern beschränkt, die als Speicherorte bezeichnet werden und in der Appsettings-Datei angegeben sind. Diese Speicherorte werden aus Der Perspektive der Datei-API als Stamm angezeigt, aber auf dem physischen Laufwerk können sie geschachtelte Ordner, der Stamm eines Laufwerks oder sogar eine Netzwerkfreigabe sein. Für jeden Speicherort wird der Lese- und Schreibzugriff unabhängig gesteuert. Pfade im Dateisystem, die nicht in einen Speicherort fallen, werden von der Dateisystem-API nicht angezeigt.
Ab Version 2.2.0 kann über den Endpunkt /api/files/locations auf die Standorteinstellungen zugegriffen werden. Dieser Endpunkt ist für Benutzer in der Besitzerbenutzergruppe der API gesperrt. Dies bedeutet, dass die Windows-Authentifizierung für den Zugriff auf den Standortendpunkt erforderlich ist. Durch das Hinzufügen oder Entfernen von Speicherorten wird der Dateisystemzugriff über die API hinzugefügt oder entfernt. Dieser Endpunkt unterstützt GET, PATCH, POST und DELETE zum Erstellen, Bearbeiten und Löschen vorhandener Speicherorte. Das Bearbeiten von Speicherorten hat keine Auswirkung auf die physischen Dateien, es bearbeitet nur die Ansicht des Dateisystems der API.
Konfiguration der Standardspeicherorte
{
"locations": [
{
"alias": "inetpub",
"id": "{id}",
"path": "C:\\inetpub",
"claims": [
"read"
]
}
]
}