Arquivos
A API de Administração do IIS fornece um conjunto de APIs de arquivo para interagir diretamente com o sistema de arquivos. Isso significa que a API pode ser usada local ou remotamente para implantar conteúdo, fazer edições ou marcar se os arquivos estiverem atualizados.
O ponto de extremidade /api/files expõe os metadados e o conteúdo de arquivos e diretórios no computador. Os arquivos disponíveis por meio dessa api são limitados aos especificados na seção de configuração de arquivos do arquivo appsettings.json . Consultar o ponto de extremidade /api/files sem especificar um diretório listará os locais presentes na configuração. Esses locais representam a raiz de todos os caminhos do sistema de arquivos disponíveis por meio da API. Os arquivos podem ser criados, excluídos e manipulados com os verbos http padrão de postagem, exclusão e patch, desde que o caminho do arquivo tenha as declarações necessárias para executar a operação.
Arquivo
{
"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"
]
}
Diretório
{
"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"
]
}
O ponto de extremidade /api/webserver/files expõe a estrutura de arquivos virtuais criada pelo IIS. Todos os recursos de arquivo nesse ponto de extremidade pertencem a algum site da Web e o caminho desse arquivo é relativo ao site ao qual ele pertence. Isso permite que sites sejam tratados como raiz do sistema de arquivos, o que é desejável em cenários de servidor Web. Os diretórios virtuais estão incluídos entre os diretórios normais para uma exibição completa da hierarquia de arquivos virtuais de um site.
Todos os arquivos de servidor Web têm uma referência a um file_info que são os metadados de arquivo que podem ser obtidos do ponto de extremidade /api/files .
Arquivo Da 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"
}
}
Diretório 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"
}
}
A API dá suporte à cópia e movimentação de arquivos por meio dos pontos de extremidade /api/files/copy e /api/files/move . O processo de cópia de um arquivo é executado executando uma solicitação POST para a API que descreve a operação de cópia desejada.
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}"
}
}
Os recursos na rota /api/files contêm apenas metadados para arquivos. Para manipular o conteúdo de um arquivo, é necessário usar a rota /api/files/content/{id} . Essa rota usa o tipo de conteúdo application/octet-stream para transmitir dados. Executar uma solicitação GET para a URL de conteúdo de um arquivo recuperará os bytes brutos do arquivo. Essa operação dá suporte a solicitações de intervalo HTTP para que o arquivo possa ser baixado em partes. Executar uma solicitação PUT para a URL de conteúdo do arquivo substituirá o conteúdo do arquivo pelo corpo da solicitação. Esta operação dá suporte a solicitações de intervalo de conteúdo HTTP para habilitar a manipulação aleatória de acesso de arquivos.
Baixar 2º 500 bytes de um arquivo
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
Editar 2º 500 bytes de um arquivo de 1000 bytes
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
Os arquivos podem ser baixados por meio do ponto de extremidade /api/files/content da API. A desvantagem desse ponto de extremidade é que, como ele está na rota de API , ele requer um token de acesso. Isso significa que o arquivo não pode ser baixado por meio de um navegador. O ponto de extremidade /api/files/download permite a criação de links de download temporários. Esses links de download são exclusivos, gerados aleatoriamente e não exigem um token de acesso. Os links de download gerados assumem a forma de /downloads/{random_sequence}. Um parâmetro opcional de vida útil (ttl) está disponível ao gerar um link de download para especificar por quanto tempo o link de download deve estar disponível. O padrão é cinco segundos.
Quando um download é gerado, o link para o download é retornado no cabeçalho Location da resposta HTTP.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
A API de arquivos pode ser usada para gerenciar arquivos localizados em compartilhamentos de arquivos. Para habilitar essa funcionalidade, o compartilhamento de arquivos deve permitir as permissões necessárias do sistema de arquivos para a entidade de segurança que representa o computador no qual a API está sendo executada. Por exemplo, suponha que haja conteúdo compartilhado localizado em \\share\images e queremos permitir que uma API em execução em um servidor Web chamado web-prod-1 enumere esses arquivos. Para permitir isso, um administrador deve modificar a ACL do diretório \\share\images para permitir o acesso DE LEITURA ao objeto do Active Directory web-prod-1 . Depois que isso for feito, o serviço no computador web-prod-1 poderá acessar esse diretório, ler os arquivos e expô-los por meio da API.
O acesso ao sistema de arquivos da API é limitado a um conjunto de pastas raiz, chamados locais, que são especificados no arquivo appsettings . Esses locais aparecem como raízes da perspectiva da API de arquivo, mas na unidade física eles podem ser pastas aninhadas, a raiz de uma unidade ou até mesmo um compartilhamento de rede. Para cada local, o acesso de leitura e gravação é controlado de forma independente. Quaisquer caminhos no sistema de arquivos que não se enquadram em um local não serão vistos pela API do sistema de arquivos.
A partir da versão 2.2.0, as configurações de localização podem ser acessadas por meio do ponto de extremidade /api/files/locations . Esse ponto de extremidade é bloqueado para usuários no grupo de usuários proprietários da API. Isso significa que a Autenticação do Windows é necessária para acessar o ponto de extremidade de locais. Adicionar ou remover locais adicionará ou removerá o acesso ao sistema de arquivos da API. Esse ponto de extremidade dá suporte a GET, PATCH, POST e DELETE para criar, editar e excluir locais existentes. A edição de locais não tem efeito sobre os arquivos físicos, apenas manipula a exibição da API do sistema de arquivos.
A configuração de locais padrão
{
"locations": [
{
"alias": "inetpub",
"id": "{id}",
"path": "C:\\inetpub",
"claims": [
"read"
]
}
]
}