PHP 使用 cURL 调用 REST API 完整指南

作者:API传播员 · 2025-10-06 · 阅读时间:4分钟

在现代开发中,API 调用几乎是所有应用的必备功能。本文记录了我在项目中使用 PHP + cURL 调用外部 API 的经验,包括 GET、POST、PUT 和 DELETE 等常用 HTTP 方法,并提供可复用的封装函数,适用于 PHP 5.6 及以上版本。


一. 什么是 cURL?

cURL(Client URL Library)是一个客户端 URL 库,支持通过多种协议(如 HTTP、HTTPS、FTP 等)与服务器进行通信。PHP 提供了 cURL 扩展,使开发者能够轻松调用外部 API。

更多信息可参考 PHP 官方 cURL 文档


二. 基础 cURL 使用示例

下面是一个最简单的 GET 请求示例,将 API 响应作为字符串返回:

// 创建并初始化 cURL 会话
$ch = curl_init();

// 设置 cURL 选项
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 执行请求并获取响应
$output = curl_exec($ch);

// 关闭 cURL 会话
curl_close($ch);

// 输出响应
echo $output;

curl_exec() 执行请求,返回结果存储在 $output 中,即使关闭 cURL 会话,变量仍可使用。


三. 封装 cURL 为可复用函数

为了提高代码可维护性,可以将 cURL 调用封装成通用函数,支持 GET、POST、PUT、DELETE 等 HTTP 方法:

function callAPI($method, $url, $data = false, $headers = false) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    switch (strtoupper($method)) {
        case "POST":
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            break;
        case "DELETE":
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
            break;
    }

    if ($headers) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }

    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

四. GET 请求示例

GET 请求通常用于获取数据,调用示例:

$get_data = callAPI('GET', 'https://api.example.com/get_url/' . $user['User']['customer_id']);
$response = json_decode($get_data, true);

通过 json_decode() 将 JSON 响应转换为 PHP 数组,便于后续操作。


五. POST 请求示例

POST 请求用于提交数据:

$data_array = array(
    "name" => "John Doe",
    "email" => "john.doe@example.com"
);

$post_data = json_encode($data_array);

$response = callAPI('POST', 'https://api.example.com/post_url', $post_data);
$response_array = json_decode($response, true);

六. PUT 请求示例

PUT 请求通常用于更新资源:

$data_array = array(
    "id" => 123,
    "status" => "active"
);

$put_data = json_encode($data_array);

$response = callAPI('PUT', 'https://api.example.com/put_url', $put_data);
$response_array = json_decode($response, true);

七. DELETE 请求示例

DELETE 请求用于删除资源,示例:

$id = 123;

$response = callAPI('DELETE', 'https://api.example.com/delete_url/' . $id);

注意:DELETE 操作不可逆,调用时需谨慎。


八. 自定义请求头示例

在某些场景下,需要自定义 HTTP 请求头,例如添加认证信息:

$headers = array(
    "Authorization: Bearer your_token",
    "Content-Type: application/json"
);

$response = callAPI('GET', 'https://api.example.com/secure_data', false, $headers);

九. 使用搜索参数示例

可通过自定义请求头或 URL 参数实现搜索或筛选:

$one_month_ago = date("Y-m-d", strtotime("-1 month"));

$headers = array(
    "Custom-Header: Search-Parameter=$one_month_ago"
);

$response = callAPI('GET', 'https://api.example.com/search', false, $headers);

十. 总结

本文介绍了:

  • PHP cURL 基础使用方法
  • 封装通用 API 调用函数
  • GET、POST、PUT、DELETE 示例
  • 自定义请求头与搜索参数的使用

通过这些示例,你可以快速上手 PHP cURL 调用 REST API,并在项目中灵活应用。

进一步学习可关注高级功能,例如生成认证密钥(utoken)或处理复杂 API 返回数据。


原文链接: https://weichie.com/blog/curl-api-calls-with-php/