使用 PHP 从 REST GET 请求中获取 ID - Oracle Right Now
Getting the ID from a REST GET Request with PHP - Oracle Right Now
我是 REST 的新手,正在尝试使用 ROQL 从查询 SELECT ID from CO.A_Country where Name="xxx";
中仅获取 ID。我正在使用 PHP:
的 REST
<?php
/**
* Example API call
* GET profile information
*/
// the ID of the profile
$profileID = 2;
// the token
$token = 'your token here';
// set up the curl resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
"https://User:Pass@test.help.com/services/rest/connect/v1.3/queryResults
/?query=select%20ID%20from%20CO.A_Country%20where%20CO.A_Country.A_Country=%27xxx%27");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$output = curl_exec($ch);
echo($output). PHP_EOL;
curl_close($ch);
?>
我得到以下结果:
HTTP/1.1 200 OK Date: Thu, 04 Aug 2016 14:58:02 GMT Server: Apache Content-Language: en-US RNT-Time: D=58455 t=1470322682582920 RNT-Machine: 128.64 Transfer-Encoding: chunked Content-Type: application/json { "items": [ { "tableName": "CO.Affected_Country", "count": 1, "columnNames": [ "id" ], "rows": [ [ "12" ] ] } ], "links": [ { "rel": "self", "href": "https://test.help.com/services/rest/connect/v1.3/queryResults?query=select%20ID%20from%20CO.A_Country%20where%20CO.A_Country.Affected_Country=%27USA%27" }, { "rel": "canonical", "href": "https://test.help.com/services/rest/connect/v1.3/queryResults" }, { "rel": "describedby", "href": "https://test.help.com/services/rest/connect/v1.3/metadata-catalog/queryResults", "mediaType": "application/schema+json" } ] }
如何在 $output 中只获取所需的 ID?
基本上 curl 返回给您的完整数据为 json。首先将此数据转换为 php 然后您可以遍历该数组以找到确切的值。
你可以使用 json_decode 功能。有关功能的更多详细信息,请参阅此。
http://php.net/manual/en/function.json-decode.php
您不能仅从 OSvC REST API 的 ROQL 查询中获取 ID;特别是因为您的查询可能 return 多个结果。这些其他数据将始终作为结果的一部分 returned(以及其他相关数据,具体取决于您使用的端点)。您需要解析这些结果以从您的查询中获取 ID。
不要 return header 作为响应的一部分 body:
curl_setopt($ch, CURLOPT_HEADER, 0);
然后使用 json_decode 将 ROQL 结果转换为 PHP object,正如@Manish Shukla 所建议的。
$results = json_decode($output);
然后,您的 ROQL 结果就可以解析了。行被 return 编辑为一个数组,您可以循环遍历。由于您的查询没有限制声明,因此您应该添加该声明或考虑 returned.
的多个值
if(!is_null($results['items'][0]['rows'])){
foreach($results['items'][0]['rows'] as $row){
echo $row; //Will output the ID from your select statement. Change this to do something with the ID as needed.
}
}
我是 REST 的新手,正在尝试使用 ROQL 从查询 SELECT ID from CO.A_Country where Name="xxx";
中仅获取 ID。我正在使用 PHP:
<?php
/**
* Example API call
* GET profile information
*/
// the ID of the profile
$profileID = 2;
// the token
$token = 'your token here';
// set up the curl resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
"https://User:Pass@test.help.com/services/rest/connect/v1.3/queryResults
/?query=select%20ID%20from%20CO.A_Country%20where%20CO.A_Country.A_Country=%27xxx%27");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$output = curl_exec($ch);
echo($output). PHP_EOL;
curl_close($ch);
?>
我得到以下结果:
HTTP/1.1 200 OK Date: Thu, 04 Aug 2016 14:58:02 GMT Server: Apache Content-Language: en-US RNT-Time: D=58455 t=1470322682582920 RNT-Machine: 128.64 Transfer-Encoding: chunked Content-Type: application/json { "items": [ { "tableName": "CO.Affected_Country", "count": 1, "columnNames": [ "id" ], "rows": [ [ "12" ] ] } ], "links": [ { "rel": "self", "href": "https://test.help.com/services/rest/connect/v1.3/queryResults?query=select%20ID%20from%20CO.A_Country%20where%20CO.A_Country.Affected_Country=%27USA%27" }, { "rel": "canonical", "href": "https://test.help.com/services/rest/connect/v1.3/queryResults" }, { "rel": "describedby", "href": "https://test.help.com/services/rest/connect/v1.3/metadata-catalog/queryResults", "mediaType": "application/schema+json" } ] }
如何在 $output 中只获取所需的 ID?
基本上 curl 返回给您的完整数据为 json。首先将此数据转换为 php 然后您可以遍历该数组以找到确切的值。 你可以使用 json_decode 功能。有关功能的更多详细信息,请参阅此。 http://php.net/manual/en/function.json-decode.php
您不能仅从 OSvC REST API 的 ROQL 查询中获取 ID;特别是因为您的查询可能 return 多个结果。这些其他数据将始终作为结果的一部分 returned(以及其他相关数据,具体取决于您使用的端点)。您需要解析这些结果以从您的查询中获取 ID。
不要 return header 作为响应的一部分 body:
curl_setopt($ch, CURLOPT_HEADER, 0);
然后使用 json_decode 将 ROQL 结果转换为 PHP object,正如@Manish Shukla 所建议的。
$results = json_decode($output);
然后,您的 ROQL 结果就可以解析了。行被 return 编辑为一个数组,您可以循环遍历。由于您的查询没有限制声明,因此您应该添加该声明或考虑 returned.
的多个值
if(!is_null($results['items'][0]['rows'])){
foreach($results['items'][0]['rows'] as $row){
echo $row; //Will output the ID from your select statement. Change this to do something with the ID as needed.
}
}