파일
IIS 관리 API는 파일 시스템과 직접 상호 작용하는 파일 API 집합을 제공합니다. 즉, API를 로컬 또는 원격으로 사용하여 콘텐츠를 배포하거나, 편집하거나, 파일이 최신 상태인 경우 검사 수 있습니다.
/api/files 엔드포인트는 컴퓨터의 파일 및 디렉터리 메타데이터와 콘텐츠를 노출합니다. 이 API를 통해 사용할 수 있는 파일은 appsettings.json파일의 파일 구성 섹션에 지정된 파일로 제한됩니다. 디렉터리를 지정하지 않고 /api/files 엔드포인트를 쿼리하면 구성에 있는 위치가 나열됩니다. 이러한 위치는 API를 통해 사용할 수 있는 모든 파일 시스템 경로의 루트를 나타냅니다. 파일 경로에 작업을 수행하는 데 필요한 클레임이 있는 한 표준 HTTP 게시물, 삭제 및 패치 동사를 사용하여 파일을 만들고, 삭제하고, 조작할 수 있습니다.
파일
{
"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에서 만든 가상 파일 구조를 노출합니다. 이 엔드포인트 아래의 모든 파일 리소스는 일부 웹 사이트에 속하며 해당 파일의 경로는 해당 웹 사이트가 속한 웹 사이트를 기준으로 합니다. 이렇게 하면 웹 사이트를 파일 시스템 루트로 처리할 수 있으며 이는 웹 서버 시나리오에서 바람직합니다. 웹 사이트의 가상 파일 계층 구조를 완전히 보기 위해 가상 디렉터리가 일반 디렉터리에 포함됩니다.
모든 웹 서버 파일에는 /api/files 엔드포인트에서 가져올 수 있는 파일 메타데이터인 file_info 대한 참조가 있습니다.
웹 파일
{
"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 엔드포인트 를 통해 파일 복사 및 이동을 지원합니다. 파일을 복사하는 프로세스는 원하는 복사 작업을 설명하는 API에 대한 POST 요청을 실행하여 수행됩니다.
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} 경로를 사용해야 합니다. 이 경로는 애플리케이션/옥텟 스트림 콘텐츠 형식을 사용하여 데이터를 전송합니다. 파일의 콘텐츠 URL에 대한 GET 요청을 수행하면 파일의 원시 바이트가 다시 처리됩니다. 이 작업은 HTTP 범위 요청을 지원하므로 파일을 청크로 다운로드할 수 있습니다. 파일의 콘텐츠 URL에 PUT 요청을 수행하면 파일의 콘텐츠가 요청 본문으로 바뀝니다. 이 작업은 파일의 임의 액세스 조작을 사용하도록 HTTP 콘텐츠 범위 요청을 지원합니다.
파일의 2번째 500바이트 다운로드
GET /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Range: bytes=500-999
1000바이트 파일의 2번째 500바이트 편집
PUT /api/files/content/{id}
Access-Token: Bearer {Access-Token}
Content-Range: bytes 500-999/1000
Content-Length: 500
파일은 API의 /api/files/content 엔드포인트를 통해 다운로드할 수 있습니다. 이 엔드포인트의 단점은 API 경로 아래에 있으므로 액세스 토큰이 필요하다는 것입니다. 즉, 브라우저를 통해 파일을 다운로드할 수 없습니다. /api/files/download 엔드포인트를 사용하면 임시 다운로드 링크를 만들 수 있습니다. 이러한 다운로드 링크는 고유하고 임의로 생성되며 액세스 토큰이 필요하지 않습니다. 생성된 다운로드 링크는 /downloads/{random_sequence}의 형식을 사용합니다. 다운로드 링크를 생성할 때 선택적 ttl(Time to Live) 매개 변수를 사용하여 다운로드 링크를 사용할 수 있는 기간을 지정할 수 있습니다. 기본값은 5초입니다.
다운로드가 생성되면 다운로드 링크가 HTTP 응답의 위치 헤더에 반환됩니다.
POST
{
"file": {
"id": "{id of the file to download}"
},
"ttl": "10000"
}
파일 API를 사용하여 파일 공유에 있는 파일을 관리할 수 있습니다. 이 기능을 사용하려면 파일 공유에서 API가 실행 중인 컴퓨터를 나타내는 보안 주체에 필요한 파일 시스템 권한을 허용해야 합니다. 예를 들어 \\share\images 에 공유 콘텐츠가 있으며 web-prod-1 이라는 웹 서버에서 실행되는 API가 이러한 파일을 열거하도록 허용하려고 합니다. 이를 허용하려면 관리자가 web-prod-1 Active Directory 개체에 대한 READ 액세스를 허용하도록 \\share\images 디렉터리의 ACL을 수정해야 합니다. 이 작업이 완료되면 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"
]
}
]
}