我一直在开发一组要为移动应用程序公开的 REST API。我正在遵循 Laravel 项目开发的存储库模式。如何实现演示者和转换器以在我的所有 API 集中格式化恒定的 JSON 输出?
例如,我有以下用于登录的控制器
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 中保持统一。
dingo API 和分形甚至框架(L5 存储库)都没有提供详细的文档,我也找不到这方面的任何教程。
我为另一个提供产品列表的 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 对象传递给转换器?