isaackearl/artisan-api

此包已被废弃且不再维护。未建议替代包。

适用于Laravel或Lumen的API服务。帮助您发送具有正确状态和代码的响应。使用Fractal处理项目和集合。

v1.0.2 2017-08-09 20:22 UTC

This package is not auto-updated.

Last update: 2020-08-22 05:39:24 UTC


README

Latest Stable Version Latest Unstable Version Software License Build Status Coverage Status Total Downloads

适用于Laravel或Lumen的API服务。帮助您发送具有正确状态和代码的响应。使用Fractal处理项目和集合。

设置/安装

使用Composer进行安装

$ composer require isaackearl/artisan-api

将服务提供者添加到config/app.php

// For Laravel add this to config/app.php
IsaacKenEarl\LaravelApi\Providers\ArtisanApiServiceProvider::class

// For Lumen add this to bootstrap/app.php 
$app->register(IsaacKenEarl\LaravelApi\Providers\ArtisanApiServiceProvider::class);

(可选) 在config/app.php中添加API外观

'Api' => IsaacKenEarl\LaravelApi\Facades\Api::class,

使用方法

在您的控制器中,您可以这样做

// do stuff like this
public function show() {
    return Api::respondWithItem($user, new UserTransformer());
}

// or like this:

return Api::respondNotFound();

有很多选项。在控制器构造函数中包含ArtisanApiInterface,您就可以在不使用外观的情况下使用它。

    private $api;

    public function __construct(ArtisanApiServiceInterface $apiService)
    {
        $this->api = $apiService;
    }

    public function index()
    {
        $users = User::all();
        return $this->api->respondWithCollection($users, new UserTransformer());
    }

您也可以进行自定义操作并链式调用方法

// you can respondWithError or respondWithMessage and customize the status code 
// and response code etc
return $this->api
            ->setStatus(401)
            ->setResponseCode(ResponseCodes::UNAUTHORIZED)
            ->respondWithError('Not logged in');

查看ArtisanApiInterface以了解所有支持的方法。您可以在以下位置找到它

ArtisanApiInterface

转换器

转换器允许您控制API响应中数据的展示方式。一个典型的转换器如下所示

class UserTransformer extends Transformer
{
    function transform($user)
    {

        return [
            'id' => $user->id,
            'name' => $user->name,
            'date_of_birth' => $user->date_of_birth->toDateString(),
            'email' => $user->getPrimaryEmail()
        ];
    }
}

您可以使用make:transformer命令生成转换器

php artisan make:transformer UserTransformer

此包使用laravel-fractal作为其Fractal实现。请查看他们的GitHub页面上的文档以获取更多具体的使用信息和示例。

由于我们使用了laravel-fractal包,您还可以发布laravel-fractal配置来自定义响应数据。

php artisan vendor:publish --provider="Spatie\Fractal\FractalServiceProvider"

测试

$ composer test

贡献

请参阅CONTRIBUTINGCONDUCT以获取详细信息。

鸣谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。