建立自定義端點
SugarCRM 7.x 的一個功能是能夠輕鬆新增和擴充套件自定義端點,以滿足你的需求。
在此示例中,我們將建立一些自定義端點以返回有關請求的一些資料。
此自定義檔案放在 custom/clients/base/api/DescriptionAPI.php
中。
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
//You need to inherit the SugarApi Class to
class DescriptionApi extends SugarApi
{
public function registerApiRest()
{
return array(
//Define a key for the array
'DescribeRequest' => array(
//Array of the acceptable kinds of requests for this method
'reqType' => array('GET','POST','PUT','DELETE'),
//If true, anyone can access. If false, only authenticated users.
'noLoginRequired' => true,
//Here is the path to access the endpoint, in this case: Describe/Request
'path' => array('Describe', 'Request'),
//Specify an empty string for the path variables
'pathVars' => array('', ''),
//method to call
'method' => 'DescribeMyRequest',
//A small description, displayed in rest/v10/help page
'shortHelp' => 'Describes your Request Method',
//Further help, displayed when drilling down into the help page
'longHelp' => 'custom/clients/base/api/help/DescribeRequestHelp.html',
),
//Here's another entry with some more in depth information
'DescribeIncludingArgs' => array(
'reqType' => array('GET','POST','PUT','DELETE'),
'noLoginRequired' => true,
//This time, we'll include a third element with a ?
//So now the path is Describe/Request/{dataFromURL}
'path' => array('Describe', 'Request', '?'),
//Here, we specify the key for accessing that data within the function
'pathVars' => array('', '','dataFromURL'),
'method' => 'DescribeMyRequestIncludingArguments',
'shortHelp' => 'Describes the request you sent, including method, URL parameters, and request body',
'longHelp' => 'custom/clients/base/api/help/DescribeIncludingArgsHelp.html',
),
);
}
/**
* Your custom logic goes in here.
*/
public function DescribeMyRequest($api, $args)
{
//Find out the request method sent
$requestType = $_SERVER['REQUEST_METHOD'];
return "You sent a $requestType request.";
}
/**
* Here is the second function
*/
public function DescribeMyRequestIncludingArguments($api, $args)
{
//Find out the request method sent
$requestType = $_SERVER['REQUEST_METHOD'];
//Get the data included in the URL parameter
$data = $args['dataFromURL'];
//Read from the request body
$body = file_get_contents('php://input');
return "You sent a $requestType request including the header argument: `$data` and the body: `$body`";
}
}
新增此檔案後,你需要執行修復和重建,以便 Sugar 正確註冊你的端點。
之後,如果你在瀏覽器中導航到 rest / v10 / Describe / Request,你應該看到:
“你發了 GET 請求。”
現在,如果你使用 REST 客戶端傳送 POST 請求,併傳送一些資料,例如:POST rest/v10/Describe/Request/Stuff
with body {"key":"value"}
,你應該收到:
“你傳送了一個 POST 請求,包括標題引數:
Stuff
和 body:{\"key\":\"value\"}
”