iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
自我挑戰組

PHP 沿途的風景系列 第 10

[Day 10] [cURL] 從程式內部 call api,以 PATCH 為例

  • 分享至 

  • xImage
  •  

[cURL] 從程式內部 call api,以 PATCH 為例

從上一篇 [cURL] 常用的 curl_setopt() 介紹 ,我們已經知道常用 curl_setopt() 的 option 是哪些。 本文以 PATCH 為例,將帶入常用的 curl_setopt()

  • curl_setopt_array() 可以設定多組 CURLOPT_XXX,因此,改用 curl_setopt_array() 取代 curl_setopt()
<?php
// create a new cURL resource
$ch = curl_init();

$payload = json_encode(
  [
    "title" => "Round world",
    "body"  => "hello word",
    "game"  => "5X Ruby",
  ]  
);

$headers = [
  "Content-type: application/json; Charset=UTF-8",
];

// 設定多個 option
curl_setopt_array($ch, [
  // URL to fetch
  CURLOPT_URL => "https://jsonplaceholder.typicode.com/posts/1",

  // 返回字串而不是直接輸出
  CURLOPT_RETURNTRANSFER => true, 

  // custom request method 
  CURLOPT_CUSTOMREQUEST => "PATCH",

  // 設定 HTTP 檔頭(Header)
  CURLOPT_HTTPHEADER => $headers,

  // 設定傳送的檔案 (payload)
  CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($ch);

curl_close($ch);

// do anything you want with your response
var_dump($response);

/* (string)
 * {
 *   "userId": 1,  
 *   "id": 1,
 *   "title": "Round world",
 *   "body": "whatever yu want",
 *   "game": "5X Ruby"
 * }
 */ 

結語

PHP cURL function 提供 Call API 的 function,以及多個 curl_setopt() 的 CURLOPT_XXX 可以使用。PHP cURL Call API 較 stream (串流) Call API 的方式,簡單許多。
下一階段,我們將 Call API 方式執行在 PHP 套件 (Guzzle) 上,那將會是另一個世界.

stream 和 cURL, 這兩個方式在設定上有些共通點,諸如:

  • URL
  • 打 API method
  • header 格式
  • payload 格式

參考文章

1 [cURL] 常用的 curl_setopt() 介紹
2 Guzzle

PHP, cURL, and HTTP POST example?


上一篇
[Day 09] 常用的 curl_setopt() 介紹
下一篇
[Day 11] 安裝 PHP 套件 guzzle
系列文
PHP 沿途的風景30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言