php调用api靠http请求代码而非html标签,核心是用curl发get/post:必须设curlopt_returntransfer=>true和curlopt_timeout,https需处理ssl验证,post json须json_encode+content-type头+authorization头,推荐封装成支持状态码校验的复用函数。

PHP本身没有“API标签”这种语法概念。所谓“加标签”,其实是误解——调用API靠的是HTTP请求代码,不是HTML式标签。关键在于用对函数、设好参数、处理好响应。
用cURL发GET请求最稳妥
cURL是PHP原生调用API最可靠的方式,兼容性好、控制力强,尤其适合需要认证头、超时设置或查错细节的场景。
- 必须设 CURLOPT_RETURNTRANSFER => true,否则
curl_exec()只返回true或false,拿不到实际响应内容 - 务必配置 CURLOPT_TIMEOUT(比如10秒),避免请求卡死阻塞脚本
- HTTPS接口若报 SSL certificate problem,测试环境可临时加
CURLOPT_SSL_VERIFYPEER => false,但生产环境应指定 CA 证书路径(CURLOPT_CAINFO) - 执行后用
curl_getinfo($ch, CURLINFO_HTTP_CODE)拿状态码,不能只靠curl_exec()是否为false
POST提交JSON数据要配齐三要素
很多RESTful API要求POST时body是标准JSON字符串,并明确声明类型,缺一不可。
-
body必须是字符串:用
json_encode($data)生成,不能直接传数组给CURLOPT_POSTFIELDS -
必须设请求头:
Content-Type: application/json是硬性要求,否则服务端大概率返回400 -
认证信息放header里:如
Authorization: Bearer xxx,和Content-Type一起传进CURLOPT_HTTPHEADER
简单GET可用file_get_contents,但有明显限制
它写起来快,但只适合无认证、纯GET、不关心状态码的轻量场景。
- 默认不支持POST,也不支持自定义超时以外的多数选项
- 出错只返回
false,无法知道是401未授权、502网关错误,还是DNS失败 - 需手动开启
allow_url_fopen(很多生产环境禁用),且必须用stream_context_create()才能加超时或header
推荐封装成小函数复用
避免每次重复写十行cURL配置。一个基础版可支持GET/POST+JSON自动处理:
- 输入URL、方法(GET/POST)、数据(数组),自动json_encode、设header、控超时
- 返回前检查HTTP状态码是否在200–299区间,失败直接返回false或抛异常
- 后续可轻松扩展重试、日志、token自动刷新等逻辑
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











