沒有API的文檔,這是難以表達。但我會嘗試。我們將使用基於JSON的通用REST API DTO標準通常是針對每個公司,有時是針對每個應用程序。簡而言之:DTO是一個序列化的對象。
讓我們說這是一個POST請求(我們正在創建一個新用戶)
{
'name':'john',
'foo':'bar',
'site':'stackoverflow.com'
}
這JSON是DTO。現在我們來做一個GET
{
'error':false,
'results':2,
'data': [{'name':'john','foo':'bar','site':'stackoverflow.com'},
{'name':'mark','foo':'bar','site':'notstackoverflow.com'}]
}
'data'數組是一個DTO數組。
因此,dox告訴你的是,你需要通過創建一個數據層來讓你的應用程序熟悉API,以便通過這些數據形成你的一側的對象,同一層應該接受一個對象並轉向它變成了一個DTO。在某些情況下,您可以使用簡單的代碼處理來自API的響應,但是在某些情況下,GET請求會返回超過10個結果,您將要使用某些類來解析它。基本上爲DTO創建一個ORM。
只要唾手可得:將主體設置爲通過圖層推送數據的結果。
public function createUserWithSomeApi()
{
$g= new \Guzzle\Client();
$response = $g->post('http://api.some.place/v1/users', [
'body' => (new strangeApiDtoParser)->prepare($new_user_data)
]);
return ApiDtoParser::fromDTO($response->getBody());
}
和接收
public function getUsersFromSomeApi()
{
$g= new \Guzzle\Client();
$response = $g->get('http://api.some.place/v1/users', [
'query' => ['foo' => 'bar']
]);
return ApiDtoParser::fromDTO($response->getBody());
}
現在解析器:
class ApiDtoParser
{
public static function fromDto($raw)
{
$returnArray=[];
$decoded =json_decode($data,true);
foreach($decoded as $one){
$obj = new DtoObj;
foreach ($one as $key => $value) {
$meth = "set". ucfirst(strtolower($key));
$obj->{$meth}($var);
}
$returnArray[]=$obj;
}
return $returnArray;
}
}
由你摘抄的背景下來看,你需要創建一個基於請求剖析儘管
我們能否有一個鏈接到API的文檔?或者可能是工作要求的轉儲? –