cURL是一種在命令行下使用URL語法來傳輸數據的工具。它可以用于發送HTTP請求,包括GET、POST、PUT、DELETE等方法。除此之外,cURL還支持與其他傳輸協議(如FTP、SCP等)交互。最近幾年,由于RESTful API的興起,使用cURL來操作JSON數據變得越來越常見。
JSON(JavaScript Object Notation)是一種輕量級數據交換格式,因其具有易讀性、易寫性、易于解析性等特點而備受歡迎。在cURL中,通過使用"--data"選項來傳輸JSON數據。
$ curl -X POST -H "Content-Type: application/json" -d '{ "name": "Tom", "age": 23 }' https://example.com/api/users
上述命令中,我們使用POST方法將JSON數據發送到URL為"https://example.com/api/users"的API接口。其中,"-H"選項指定請求頭,"-d"選項指定請求體。請求頭中指定了Content-Type為application/json,這表示請求體是一個JSON數據。而請求體中則是一個JSON對象,包含兩個屬性"name"和"age"。
除了使用"--data"選項以外,還可以使用"--data-ascii"選項傳輸JSON數據。不同的是,"--data-ascii"選項會對JSON數據進行一層ASCII編碼,用于防止數據被意外修改。
$ curl -X POST -H "Content-Type: application/json" --data-ascii '{"name":"Tom", "age":23}' https://example.com/api/users
在接收JSON數據時,cURL也提供了"--data-raw"和"--data-binary"選項,這兩種選項都可以發送未經過特別處理的數據。其中,"--data-raw"會對一些特殊字符進行轉義,而"--data-binary"則不會。
$ curl -X POST -H "Content-Type: application/json" --data-binary '{"name":"Tom", "age":23}' https://example.com/api/users