Curl 클라이언트는 curl 버전 7.34.0 이상을 사용해야 합니다. 두 가지 일반적인 CLI 기반 HTTP 클라이언트는 wget 및 curl입니다. 이 절에는 curl을 사용하여 RESTful API 호출을 수행하는 방법에 대한 여러 가지 예가 나와 있습니다. wget을 사용하면 유사한 기능을 수행할 수 있습니다.
이 예에서는 간단한 HTTP GET 요청을 사용하여 일부 JSON 데이터를 얻는 방법을 보여 줍니다.
$ curl --user ${USER}:${PASSWORD} -k \
-i https://hostname:215/api/storage/v1/pools/p1
HTTP/1.1 200 OK
Date: Tue, 23 Jul 2018 12:57:02 GMT
Server: WSGIServer/0.1 Python/2.6.4
Content-Length: 284
Content-Type: application/json
X-Zfs-Sa-Nas-Api: 1.0
{
"pool": {
"profile": "mirror",
"name": "p1",
"usage": {
"available": 895468984832.0,
"total": 895500681216.0,
"dedupratio": 100,
"used": 31696384.0
},
"peer": "00000000-0000-0000-0000-000000000000",
"state": "online",
"owner": "admin1",
"asn": "314d252e-c42b-e844-dab1-a3bca680b563"
}
}
이 예에서는 요청의 JSON 데이터를 전송하여 새 리소스를 만드는 방법을 보여 줍니다.
$ curl --user ${USER}:${PASSWORD} -s -k -i -X POST -d @- \
-H "Content-Type: application/json" \
https://zfs-storage.example.com:215/api/user/v1/users <<JSON
> {"logname": "rest_user",
> "fullname": "REST User",
> "initial_password": "password"}
> JSON
HTTP/1.1 201 Created
Date: Tue, 23 Jul 2018 13:07:37 GMT
Server: WSGIServer/0.1 Python/2.6.4
X-Zfs-Sa-Appliance-Api: 1.0
Content-Type: application/json
Content-Length: 357
{
"user": {
"logname": "rest_user",
"fullname": "REST User",
"initial_password": "password",
"require_annotation": false,
"kiosk_mode": false,
"kiosk_screen": "status/dashboard",
"roles": ["basic"],
"exceptions": {},
"preferences": {
"href": "/api/user/v1/users/admin1/preferences",
"locale": "C",
"login_screen": "status/dashboard",
"session_timeout": 15,
"cli_idle_timeout": -1,
"advanced_analytics": false,
"keys": {}
}
}
}
이 예에서는 사용자의 세션 시간 초과를 수정합니다.
$ curl --user admin1:password -3 -s -k -i -X PUT \
-H "Content-Type: application/json" -d @- \
https://zfs-storage.example.com:215/api/appliance/v1/users/admin1/preferences <<JSON
> {"session_timeout":60}
> JSON
HTTP/1.1 202 Accepted
Date: Wed, 24 Jul 2018 05:43:17 GMT
X-Zfs-Sa-Appliance-Api: 1.0
Content-Type: application/json
Content-Length: 0
{
"preferences": {
"href": "appliance/v1/users/admin1/preferences",
"locale": "C",
"login_screen": "status/dashboard",
"session_timeout": 60,
"cli_idle_timeout": -1,
"advanced_analytics": false,
"keys": {}
}
}
이 명령은 시스템에서 사용자를 제거합니다.
$ curl --user ${USER}:${PASSWORD} -s -k -i -X DELETE \
https://zfs-storage.example.com:215/api/appliance/v1/users/admin1
HTTP/1.1 204 No Content
Date: Tue, 23 Jul 2018 13:21:11 GMT
Server: WSGIServer/0.1 Python/2.6.4
X-Zfs-Sa-Appliance-Api: 1.0
Content-Length: 0