Guzzle PUT 數據方式說明
使用 Guzzle
使用 Guzzle 只能透過 POST 方式來傳遞 application/x-www-form-urlencoded form params
( 官方原文:form_params - Used to send an application/x-www-form-urlencoded POST request. )
若使用 PUT, DELTE 則需要改用 body 或者 json 格式傳輸,例如:
Body 傳輸格式:
<?php
$client->request('PUT', '/put', ['body' => $resource]);
Json 傳輸格式:
<?php
$request = $client->request('PUT', $url, [
'json' => $params,
'headers' => [
'Referer' => '(intentionally removed)',
'Accept' => 'application/json',
]
]);
因此,在 Laravel 接收端,對於 PUT 參數就不能用正常的 form input 方式取得
必須透過取得 Request content body ,再將 json字串進行解析,才能取得參數
當然,透過POST也可以傳送body json內容
透過POST傳送body json 內容
<?php
...
$client = new Client();
$AuthInfo = json_encode([
"code"=>$para["code"],
"data"=>$para["data"]
]);
$res = $client->post($para["url"], [
"headers"=> [
"Content-Type" => "application/json"
],
"body"=> $AuthInfo
]);
Curl
Curl 可以直接執行 POST 傳輸參數
curl -X POST "YOUR_URI" -F 'file=@/myfile.txt'
使用 Curl 就可以透過指定 Content-Type multipart form-data 方式來傳輸 PUT 資料
例如
curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "your_uri"
如果使用 Row data 則使用:
curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"