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 返回数据。
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- 解析2024年Gartner® API保护市场指南
- Cursor 2025指南:自定义API密钥配置与最佳实践
- 如何在Java、Python、PHP中使用会员短信API?
- Python调用IP地址API查询国家信息
- 如何利用搜索分析API提高用户参与度和投资回报率
- 解决REST API常见问题:问题清单及解答一览
- OpenAI的API有哪些功能?
- SpringBoot中REST API的错误异常处理设计
- 利用 Instagram API 开展业务的 11 种方法
- 使用Python进行API调用:面向开发人员的分步指南
- Go工程化(五) API 设计下: 基于 protobuf 自动生成 gin 代码
- Python调用股票API获取实时数据