如何理解此API规范?

时间:2017-10-28 05:22:28

标签: php api http

我以前只做过一次API请求。

已经提供了包含以下信息的文件:

  

您必须使用用户名和密钥进行身份验证才能使用API​​执行任何操作。身份验证详细信息必须与每个中的其他变量一起传递   请求。

     

通过HTTP(S)POST请求https://(URL)。通信采用JSON格式,因此请确保您的HTTP标头指定“application / json”。我们将为大多数请求返回HTTP状态代码200(OK),但也可以返回400(错误请求)或403(禁止/授权失败)

然后我会看到所有端点的代码示例,例如:

  

示例请求

{
"request": "GetAvailableServices",
"username": "custTEST_api",
"key": "xxxxxxxxxxxxxxxxxxxxxx"
}
     

响应

 {
"success": true,

"available_services": {
"IPECX": {
"carrier_name": "TOLL IPEC",
"service_name": "ROAD EXPRESS"
},
"IPECH": {
"carrier_name": "TOLL IPEC",
"service_name": "PRIORITY"
},
"GIBSONX": {
"carrier_name": "GIBSON",
"service_name": "ROAD EXPRESS"
}
},
"error_code": null,
"error_message": null

所以这与我上次的API集成不同。

我已获得相应的用户名和密钥。

我试图在PHP中这样做..但不知道如何将上述内容翻译成php文档。我在curl中执行了以前的授权以获取JSON数据。但只是想不出这个。

如果我可以让一个请求正常工作,那我就没事了。

1 个答案:

答案 0 :(得分:1)

这就是我做到的。

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.com.au/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n\"request\": 
\"GetAvailableServices\",\r\n\"username\": \"APIUSERNAME\",\r\n\"key\": 
\"APIKEY\"\r\n}",
  CURLOPT_HTTPHEADER => array(
  "cache-control: no-cache",
  "content-type: application/json",
  "key: \"APIKEY\"",
  "request: \"GetAvailableServices\"",
  "username: \"INNOVATIVEAPI\""
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
 echo "cURL Error #:" . $err;
} else {
echo $response;
}