File
L'API amministrazione IIS fornisce un set di API di file per interagire direttamente con il file system. Ciò significa che l'API può essere usata in locale o in remoto per distribuire il contenuto, apportare modifiche o controllare se i file sono aggiornati.
L'endpoint /api/files espone i metadati e il contenuto di file e directory nel computer. I file disponibili tramite questa API sono limitati a quelli specificati nella sezione di configurazione dei file del file appsettings.json . L'esecuzione di query sull'endpoint /api/files senza specificare una directory elenca i percorsi presenti nella configurazione. Questi percorsi rappresentano la radice di tutti i percorsi del file system disponibili tramite l'API. I file possono essere creati, eliminati e modificati con i verbi HTTP standard post, eliminazione e patch, purché il percorso del file disponga delle attestazioni necessarie per eseguire l'operazione.
File
{
"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"
]
}
Directory
{
"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"
]
}
L'endpoint /api/webserver/files espone la struttura di file virtuale creata da IIS. Tutte le risorse file in questo endpoint appartengono a un sito Web e il percorso di tale file è relativo al sito Web a cui appartiene. Ciò consente ai siti Web di essere considerati come radice del file system, che è auspicabile negli scenari del server Web. Le directory virtuali sono incluse tra le normali directory per una visualizzazione completa della gerarchia di file virtuali di un sito Web.
Tutti i file del server Web hanno un riferimento a un file_info , ovvero i metadati del file che possono essere ottenuti dall'endpoint /api/files .
Web File
{
"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"
}
}
Web Directory
{
"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 supporta la copia e lo spostamento di file tramite gli endpoint /api/files/copy e /api/files/move . Il processo di copia di un file viene eseguito eseguendo una richiesta POST all'API che descrive l'operazione di copia desiderata.
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}"
}
}
Le risorse nella route /api/files contengono solo metadati per i file. Per modificare il contenuto di un file, è necessario usare la route /api/files/content/{id} . Questa route usa il tipo di contenuto application/octet-stream per la trasmissione dei dati. L'esecuzione di una richiesta GET all'URL del contenuto di un file retreiverà i byte non elaborati del file. Questa operazione supporta le richieste di intervallo HTTP in modo che il file possa essere scaricato in blocchi. L'esecuzione di una richiesta PUT all'URL del contenuto del file sostituirà il contenuto del file con il corpo della richiesta. Questa operazione supporta le richieste di intervallo di contenuto HTTP per abilitare la manipolazione casuale dell'accesso ai file.
Scaricare 2° 500 byte di un file
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
Modificare 2° 500 byte di un file di 1000 byte
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
I file possono essere scaricati tramite l'endpoint /api/files/content dell'API. Lo svantaggio di questo endpoint è che poiché si trova nella route api , richiede un token di accesso. Ciò significa che il file non può essere scaricato tramite un browser. L'endpoint /api/files/download consente la creazione di collegamenti di download temporanei. Questi collegamenti di download sono univoci, generati in modo casuale e non richiedono un token di accesso. I collegamenti di download generati hanno la forma di /downloads/{random_sequence}. Durante la generazione di un collegamento di download è disponibile un parametro facoltativo di durata (ttl) per specificare per quanto tempo deve essere disponibile il collegamento di download. Il valore predefinito è 5 secondi.
Quando viene generato un download, il collegamento per il download viene restituito nell'intestazione Percorso della risposta HTTP.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
L'API dei file può essere usata per gestire i file che si trovano nelle condivisioni file. Per abilitare questa funzionalità, la condivisione file deve consentire le autorizzazioni necessarie per il file system all'entità che rappresenta il computer in cui è in esecuzione l'API. Si supponga, ad esempio, che ci sia contenuto condiviso in \\share\images e si voglia consentire a un'API in esecuzione in un server Web denominato web-prod-1 di enumerare questi file. A tale scopo, un amministratore deve modificare l'ACL della directory \\share\images per consentire l'accesso READ all'oggetto Active Directory web-prod-1 . Al termine, il servizio nel computer web-prod-1 sarà in grado di accedere a questa directory, leggere i file e quindi esporli tramite l'API.
L'accesso al file system dell'API è limitato a un set di cartelle radice, denominate percorsi, specificati nel file appsettings . Questi percorsi vengono visualizzati come radici dal punto di vista dell'API file, ma nell'unità fisica possono essere cartelle annidate, la radice di un'unità o anche una condivisione di rete. Per ogni posizione, l'accesso in lettura e scrittura viene controllato in modo indipendente. Tutti i percorsi nel file system che non rientrano in un percorso non verranno visualizzati dall'API del file system.
A partire dalla versione 2.2.0, le impostazioni del percorso sono accessibili tramite l'endpoint /api/files/locations . Questo endpoint è bloccato per gli utenti nel gruppo di utenti proprietari dell'API. Ciò significa che l'autenticazione di Windows è necessaria per accedere all'endpoint delle posizioni. L'aggiunta o la rimozione di percorsi aggiunge o rimuove l'accesso al file system dall'API. Questo endpoint supporta GET, PATCH, POST e DELETE per la creazione, la modifica e l'eliminazione di percorsi esistenti. La modifica dei percorsi non ha alcun effetto sui file fisici, ma modifica solo la visualizzazione dell'API del file system.
Configurazione dei percorsi predefiniti
{
"locations": [
{
"alias": "inetpub",
"id": "{id}",
"path": "C:\\inetpub",
"claims": [
"read"
]
}
]
}