我一直在開發一組其餘的API以供移動應用程序使用。我正在遵循Laravel項目開發的存儲庫模式。我如何實現一個演示者和轉換器,用於在我的所有API中設置一個常量JSON輸出的格式?Laravel + Dingo中一致的REST API響應
例如我爲登錄
public function authenticate()
{
$request = Request::all();
try {
// If authenticated, issue JWT token
//Showing a dummy response
return $token;
} catch (ValidatorException $e) {
return Response::json([
'error' =>true,
'message' =>$e->getMessageBag()
]);
}
}
現在以下控制器哪裏變壓器和主持人進入了嗎?我知道通過轉換數據庫對象來格式化輸出,並生成格式化的JSON,以便在我的API中保持統一。
遊戲的API和分形甚至框架(L5 repository)沒有提供詳細的文檔,我找不到任何教程。
我已經創造了另一個 API賦予產品
namespace App\Api\V1\Transformers;
use App\Entities\Product;
use League\Fractal\TransformerAbstract;
class UserTransformer extends TransformerAbstract {
public function transform(\Product $product)
{
return [
'id' => (int) $product->products_id
];
}
}
列表演示
<?php
namespace App\Api\V1\Presenters;
use App\Api\V1\Transformers\ProductTransformer;
use Prettus\Repository\Presenter\FractalPresenter;
/**
* Class ProductPresenter
*
* @package namespace App\Presenters;
*/
class ProductPresenter extends FractalPresenter
{
/**
* Transformer
*
* @return \League\Fractal\TransformerAbstract
*/
public function getTransformer()
{
return new UserTransformer();
}
}
我將如何設置演示控制器和背部應對以下主持人和變壓器?試過
$this->repository->setPresenter("App\\Presenter\\PostPresenter");
但它似乎沒有工作,文檔並沒有顯示完整的步驟。
- 在上面的例子中,我該如何爲我可以在我的API中使用的錯誤響應制作模板,以及如何將錯誤例外傳遞給它?
- 看起來好像演示者和變換器可以用來將數據庫對象轉換爲可以表現的JSON,而不是其他任何東西。是對的嗎?
- 您如何使用演示者和轉換器來獲得成功響應和錯誤響應?通過傳遞異常,而不是DB對象到變換器?
回報$這個 - >響應 - >項目($用戶,新UserTransformer);實際上並沒有改變我的迴應。沒有錯誤或其中顯示任何內容。我只是得到沒有任何轉換的普通json。 – Ajeesh