jack.savich / laravel-api-skeleton
此包已被废弃,不再维护。未建议替代包。
此包包含 Laravel 骨架 API 应用程序
v1.1.0
2016-11-04 14:09 UTC
Requires
- php: >=5.5.9
- illuminate/auth: ^5.2
- illuminate/database: ^5.3
- illuminate/events: ^5.2
- illuminate/http: ^5.2
- illuminate/routing: ^5.2
- illuminate/support: ^5.2
- tymon/jwt-auth: 0.5.*
README
此包提供 Laravel 骨架 API,包括 BaseController、Request 和 json 格式响应
安装
Composer 需求
savich/laravel-api-skeleton
注册服务提供者
'providers' => [
...
Savich\ApiSkeleton\Providers\ApiServiceProvider::class,
注册中间件
protected $routeMiddleware = [
...
'api.auth' => \Savich\ApiSkeleton\Middleware\Auth::class,
使用方法
控制器
use Savich\ApiSkeleton\Controllers\ApiController;
class YourController extends ApiController
路由
在您的路由文件中指定为路由组指定的中间件,用于检查用户是否通过 API 进行身份验证
// on routes file
Route::group(['middleware' => 'api.auth'], function () {
// your routes ...
});
请求
所有 API 请求都应继承 ApiRequest 以实现统一的错误格式
use Savich\ApiSkeleton\Requests\ApiRequest;
class YourRequest extends ApiRequest
功能
响应
要生成 API 响应,只需在控制器方法中调用 ApiController 的 send()
即可,它提供便捷的响应表示方式
use Savich\ApiSkeleton\Controllers\ApiController;
use Savich\ApiSkeleton\Response\ResponseInterface;
class YourController extends ApiController
{
public function index()
{
return $this->send(/* params */);
}
响应看起来像这样
{
"status": 1,
"message": null,
"token": null,
"result": null // here will be your `params`
}
身份验证
此包提供通过 API 进行简单身份验证的功能。您只需使用 TokenTrait,即可使登录变得简单且愉快。
示例。
use Savich\ApiSkeleton\Controllers\ApiController;
use Savich\ApiSkeleton\Controllers\Mixins\TokenTrait;
use Savich\ApiSkeleton\Response\ResponseInterface;
class AuthController extends ApiController
{
use TokenTrait;
public function __construct(ResponseInterface $response)
{
parent::__construct($response);
}
/**
* API Login, on success return JWT Auth token
* @param LoginRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function login(LoginRequest $request) // you can make your own request
{
$user = $this->getUser($request->only('email', 'password'));
if (!$user) {
$this->addError('Invalid credentials');
return $this->send();
}
return $this->attemptToken($user);
}
}