本文概述
- 自己使用cURL
- 使用库(Unirest)
由于REST API使用HTTP, 因此几乎所有编程语言都可以使用它们, 并且易于测试(REST API的要求是客户端和服务器彼此独立, 允许以任何语言进行编码并在支持长寿性方面得到了改进和进化)。
RESTful Web服务(也称为RESTful Web API)是使用HTTP和REST原理实现的Web服务。
基本上, 要访问api, 我们需要根据要对api端点(URL)进行的操作以不同的格式执行请求。使用javascript, 一个简单的XMLHttpRequest应该可以解决问题, 但是使用PHP, 还有另一种实现方法, 称为cURL。
cURL是一个库, 可让你使用PHP发出HTTP请求。你需要了解的所有内容(以及大多数其他扩展)都可以在PHP手册中找到。为了使用PHP的cURL函数, 尽管大多数PHP发行版都已经安装了cURL, 但是如果不是这种情况, 则需要安装?libcURL软件包。
自己使用cURL 如前所述, cURL是从PHP访问宁静的API的方法。
以下方法将帮助你获得
注意:建议使用库而不是纯cURL。
<
?php
// Method: POST, PUT, GET etc
// Data: array("param" =>
"value") ==>
index.php?param=valuefunction CallAPI($method, $url, $data = http://www.srcmini.com/false)
{
$curl = curl_init();
switch ($method)
{
case"POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
如果出现错误, 该方法将返回false。你可以阅读以下主题, 该主题解释了如何使用cURL处理错误。
使用库(Unirest) 使用库而不是重新设计轮子, 这就是为什么最好使用Unirest而不是编写你自己的请求函数, 因为该库处理了使用普通cURL会遇到的许多常见问题, 并且得到了维护。
Unirest是一组由Mashape构建和维护的, 以多种语言提供的轻量级HTTP库, 该库还维护着开源API Gateway Kong。
特征
- 调用GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH请求的实用方法。
- 支持表单参数, 文件上传和自定义主体实体。
- 支持gzip。
- 本地支持基本, 摘要, 协商, NTLM身份验证。
- 可自定义的超时。
- 每个请求的可自定义默认标头(DRY)。
- 自动JSON解析为JSON响应的本机对象。
- 卷曲
- PHP 5.4以上
{
"require-dev": {
"mashape/unirest-php": "2.*"
}
}
或者直接在控制台中执行命令:
composer require mashape/unirest-php
然后, 你将能够使用Unirest在类use Unirest; 的顶部添加一个简单的use语句。
使用Unirest
以下代码显示了对Spotify API的/ search端点的简单GET请求。
<
?php// search Songs of Frank Sinatra
$headers = array('Accept' =>
'application/json');
$query = array('q' =>
'Frank sinatra', 'type' =>
'track');
$response = Unirest\Request::get('https://api.spotify.com/v1/search', $headers, $query);
// or use a plain text request
// $response = Unirest\Request::get('https://api.spotify.com/v1/search?q=Frank%20sinatra&
type=track');
// Display the result
dump($response->
body);
注意:如果将Unirest与HTTPS API结合使用时, 如果代码引发” SSL证书问题:无法获取本地发行者证书” 错误, 则你可能需要阅读以下文章以了解如何解决。
文章图片
响应变量具有以下属性:
- headers [Array]:包含请求标头(日期, 服务器等)的数组。
- 身体
- code [Int]:请求的响应代码。
- raw_body:请求的原始内容。
使用最常见的unirest方法:
<
?phpUnirest\Request::get($url, $headers = array(), $parameters = null)
Unirest\Request::post($url, $headers = array(), $body = null)
Unirest\Request::put($url, $headers = array(), $body = null)
Unirest\Request::patch($url, $headers = array(), $body = null)
Unirest\Request::delete($url, $headers = array(), $body = null)
【如何在Symfony 3中访问Rest API】玩得开心 !
推荐阅读
- XAMPP-WAMPP PHP-SSL证书错误(unable to get local issuer certificate)
- 如何在C#和WinForms中操作和使用JSON
- 如何在Winforms应用程序中使用CefSharp(Chrome嵌入式框架c#)
- 如何在Windows中使用PuTTY在远程服务器(Linux和Ubuntu)上执行.sh脚本
- 什么是FTPS,FTP,SFTP,它们之间有什么区别
- 使用readme.md文件中的Github Markdown可能不知道的提示和技巧
- 使用PHPExcel使用图表生成的Excel文件会因Symfony中的流响应而损坏-PHP
- 如何在Symfony中获取教条查询状态(信息)
- 在Symfony 3中的表单上实现Google reCAPTCHA