Файлы
API администрирования IIS предоставляет набор API файлов для непосредственного взаимодействия с файловой системой. Это означает, что API можно использовать локально или удаленно для развертывания содержимого, внесения изменений или проверка, если файлы актуальны.
Конечная точка /api/files предоставляет метаданные и содержимое файлов и каталогов на компьютере. Файлы, доступные через этот API, ограничены файлами, указанными в разделе конфигурации файлов файла appsettings.json . Запрос конечной точки /api/files без указания каталога приведет к перечислению расположений, присутствующих в конфигурации. Эти расположения представляют корень всех путей файловой системы, доступных через API. Файлы можно создавать, удалять и обрабатывать с помощью стандартных команд http post, delete и patch при условии, что путь к файлу содержит утверждения, необходимые для выполнения операции.
Файл
{
"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"
]
}
Каталог
{
"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"
]
}
Конечная точка /api/webserver/files предоставляет структуру виртуальных файлов, созданную службами IIS. Все файловые ресурсы в этой конечной точке принадлежат к определенному веб-сайту, и путь к этому файлу относится к веб-сайту, к которому он принадлежит. Это позволяет считать веб-сайты корневыми файловой системы, что желательно в сценариях веб-сервера. Виртуальные каталоги включаются в обычные каталоги для полного представления иерархии виртуальных файлов веб-сайта.
Все файлы веб-сервера имеют ссылку на file_info который представляет собой метаданные файла, которые можно получить из конечной точки /api/files .
Веб-файл
{
"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"
}
}
Веб-каталог
{
"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"
}
}
API поддерживает копирование и перемещение файлов через конечные точки /api/files/copy и /api/files/move . Процесс копирования файла выполняется путем выполнения запроса POST к API, описывающего требуемую операцию копирования.
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}"
}
}
Ресурсы в маршруте /api/files содержат только метаданные для файлов. Для управления содержимым файла необходимо использовать маршрут /api/files/content/{id} . Этот маршрут использует тип контента application/octet-stream для передачи данных. Выполнение запроса GET к URL-адресу содержимого файла приведет к извлечению необработанных байтов файла. Эта операция поддерживает запросы диапазона HTTP, поэтому файл можно скачать блоками. Выполнение запроса PUT к URL-адресу содержимого файла заменит содержимое файла текстом запроса. Эта операция поддерживает HTTP-запросы диапазона содержимого для обеспечения управления произвольным доступом к файлам.
Скачивание 2-го файла размером 500 байт
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
Изменение 2-го 500-байтового файла размером 1000 байт
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
Файлы можно скачать через конечную точку /api/files/content API. Недостаток этой конечной точки заключается в том, что, так как она находится в маршруте API , ей требуется маркер доступа. Это означает, что файл нельзя скачать через браузер. Конечная точка /api/files/download позволяет создавать временные ссылки для скачивания. Эти ссылки для скачивания являются уникальными, создаются случайным образом и не требуют маркера доступа. Созданные ссылки для скачивания принимают вид /downloads/{random_sequence}. Необязательный параметр срока жизни (ttl) доступен при создании ссылки для скачивания, чтобы указать, как долго должна быть доступна ссылка для скачивания. Значение по умолчанию — пять секунд.
При создании скачивания ссылка на скачивание возвращается в заголовке Location HTTP-ответа.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
API файлов можно использовать для управления файлами, расположенными в общих папках. Чтобы включить эту функцию, общая папка должна разрешить необходимые разрешения файловой системы для субъекта, представляющего компьютер, на котором выполняется API. Например, предположим, что в папке \\share\images находится общее содержимое, и мы хотим разрешить API, работающему на веб-сервере с именем web-prod-1 , перечислять эти файлы. Чтобы это сделать, администратор должен изменить список ACL каталога \\share\images , чтобы разрешить доступ на чтение к объекту Active Directory web-prod-1 . После этого служба на компьютере web-prod-1 сможет получить доступ к этому каталогу, прочитать файлы, а затем предоставить их через API.
Доступ к файловой системе API ограничен набором корневых папок, называемых расположениями, которые указаны в файле appsettings . Эти расположения отображаются как корневые с точки зрения API файлов, но на физическом диске это могут быть вложенные папки, корень диска или даже сетевая папка. Для каждого расположения доступ на чтение и запись контролируется независимо. ВСЕ пути в файловой системе, которые не входят в расположение, не будут видны API файловой системы.
Начиная с версии 2.2.0 параметры расположения доступны через конечную точку /api/files/locations . Эта конечная точка заблокирована для пользователей в группе владельцев API. Это означает, что для доступа к конечной точке расположений требуется проверка подлинности Windows. Добавление или удаление расположений приведет к добавлению или удалению доступа к файловой системе из API. Эта конечная точка поддерживает GET, PATCH, POST и DELETE для создания, изменения и удаления существующих расположений. Расположение редактирования не влияет на физические файлы, оно только управляет представлением ФАЙЛОВой системы API.
Конфигурация расположений по умолчанию
{
"locations": [
{
"alias": "inetpub",
"id": "{id}",
"path": "C:\\inetpub",
"claims": [
"read"
]
}
]
}