私は、モバイルアプリ向けに公開される一連の残りの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()
]);
}
}
については、以下のコントローラは、今、変圧器およびプレゼンターは、画像に入って来るんいるたとえば
?両方とも、dbオブジェクトを変換して出力をフォーマットし、書式設定されたJSONを生成してAPI間で統一されたままにするために使用されていることはわかっています。
ディンゴAPIとフラクタル、さらにはフレームワーク(L5 repository)は詳細なドキュメントを提供していないため、これに関するチュートリアルは見つかりません。
私は製品
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();
}
}
のリストを与える別 APIについて次のプレゼンターと変圧器を作成しました?試しました
$this->repository->setPresenter("App\\Presenter\\PostPresenter");
しかし、それは動作していないようだし、ドキュメントは完全な手順を示していません。
- 上記の例では、API全体で使用できるエラーレスポンスのテンプレートを作成する方法とエラー例外をどのように渡すのですか?
- データベースオブジェクトを表現可能なJSONに変換するのにプレゼンターとトランスフォーマーを使用できますが、それ以外のものはありません。そうですか?
- 成功応答とエラー応答にはどのようにプレゼンターとトランスフォーマーを使用しますか?例外をDBオブジェクトの代わりにトランスフォーマに渡すことによって?
リターンの$ this - >対応 - >アイテム($ユーザー、新しいUserTransformer)。実際に私の反応を変えているわけではありません。そこにエラーや何も表示されていません。私はちょうど変換なしでプレーンjsonを取得しています。 – Ajeesh