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"