Laravel-Angular-Material中文文档——REST API

概述

在现代的web app中REST API是一个被频繁使用的功能。
这也是为什么我们专注于使这个过程保持一致。
这可以使你在你的API中更加方便地开发新的接口。
打比方来说,在RestAngular中验证错误会自动展示。
Laravel Angular Material Starter可以帮助你更好地规范API返回的数据格式
错误响应对应着一个具体的格式,成功的响应对应另一个。
前端也会受益于这种一致性,通过配置响应拦截器,在接受到错误的返回后它可以自动弹出一个验证错误的弹出层
所有这一切都提供了可选的Json Web Token Authentication支持和有用的API test helpers,这将使集成测试更容易。

响应宏(Response Macros)

Response Macros本来是Laravel框架中的一个特性
在上面我们提到了REST APIs需要保持一致性,所以我们提供了两个默认的响应宏来从你的接口返回成功、失败时的数据

PHP

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class PostsController
{
public function get()
{
$posts = App\Post::all();
return response()->success('posts', $posts);
}
}

PHP

1
2
3
4
5
6
7
8
9
10
11
12
<?php
class SettingsController
{
public function update()
{
if ( !\Auth::user()->is_verified ){
return response()->error('Not Authorized', 401);
}
}
}

注意即使验证错误通过了$this->validate($request, [])之后返回了与response()->error()相同的错误格式,但是会携带422的错误状态码(不可处理实体)
这意味着你期望所有的正确数据返回同一种格式的数据,错误数据也是一样(包括验证)
得益于这种一致性,你可以在RestAngular中配置选择在Toast中展示验证错误信息。
当然,在这样的前提下,API test helper也可以很容易地断言被用来返回的正确响应。
例子:->seeApiSuccess()->seeValidationError()->seeApiError(401)

验证响应
如果你计划修改error的响应宏,你需要在基础控制器文件App\Http\Controllers\controller.php中进行应用和修复。

RestAngular

RestAngular 是一个用来简化常用的GET、POST、DELETE、UPDATE请求的AngularJS服务,这样你可以使用最少的客户端代码来实现它,对于通过REST API来处理数据的web app来说,这是最适合的。

这使得它与这个库可以完美地配合起来。

RestAngular 是$http上的一层

默认配置

这个库提供给你一个叫做API的服务(文件路径:angular/services/api.service.js),它配置了如下内容:

  • Content negotiation (header)
  • Content type (header)
  • Base URL: 这意味着你在调用API端口时不需要写/api/作为前缀
  • error interceptor(异常拦截器),它会将第一条错误信息展示在红色的弹出层中
  • JWT 支持

所有这些配置都与我们期望的API(也内联到dingo / api的配置)是一致的。
你可以浏览他们提供的可选的其他选项——their repository

避免使用Restangular service,通过API来调用
推荐你避免使用Restangular服务
使用继承了Restangular的服务(如API)可以让你为其他API提供其他的服务或配置,可以更加灵活。

虽然RestAngular对于初学者来说并不是那么容易掌握,但是这是非常值得的,一旦你掌握了它,你可以用非常流畅的语法来调用你的接口。

JWT Authenticated routes

config/api.php中,JWT被配置作为dingo/api的一个验证提供者。
它允许你使用api.auth中间件为需要验证的路由提供验证服务
如果用户没有登录,或者验证头丢失,他们将无法访问接口。
如果你想增加更复杂的内容,你可以创建自己的中间件。

您的打赏是对我最大的鼓励!