菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2735
2

扩展包推荐:为你的 Laravel Restful API 添加 HATEOAS

原创
05/13 14:22
阅读数 1776


Laravel HATEOAS是GüntherDebrauwer的一个软件包,它使用HATEOAS链接公开REST API的授权逻辑。

HATEOAS允许您公开REST API的授权逻辑。该软件包可以轻松地将HATEOAS链接添加到Laravel API资源中。

这个包定义了一个 artisan 命令,用于创建一个新的 HATEOAS 类,其中包含了生成链接JSON响应的方法:

class MessageHateoas
{
    use CreatesLinks;

/**
 * 获取 HATEOAS 链接用来查看消息。
 *
 * @param \App\Message $message
 *
 * @return null|\GDebrauwer\Hateoas\Link
 */
public function self(Message $message)
{
    if (! auth()->user()->can('view', $message)) {
        return;
    }

    return $this->link('message.show', ['message' => $message]);
}

/**
 * 获取 HATEOADS 链接用来删除消息。
 *
 * @param \App\Message $message
 *
 * @return null|\GDebrauwer\Hateoas\Link
 */
public function delete(Message $message)
{
    if (! auth()->user()->can('delete', $message)) {
        return $this->link('message.archive', ['message' => $message]);
    }

    return $this->link('message.destroy', ['message' => $message]);
}

}

然后在你的 Laravel 资源类中,你可以使用这个包的 HasLinks trait 来引入连接:

class MessageResource extends JsonResource
{
    use HasLinks;

/**
 * 将数据源转化为数组.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return array
 */
public function toArray($request)
{
    return [
        'id' => $this->id,
        'text' => $this->text,
        '_links' => $this->links(),
    ];
}
}

最后,上面示例的返回结果可能类似于下面的JSON响应:

{
    "data": [
        {
            "id": 1,
            "text": "Hello world!",
            "_links": [
                {
                    "rel": "self",
                    "type": "GET",
                    "href": "http://localhost/message/1"
                },
                {
                    "rel": "delete",
                    "type": "DELETE",
                    "href": "http://localhost/message/1"
                }
            ]
        }
    ]
}

如果您不熟悉HATEOAS,它是Hypermedia As The Engine of Application State的缩写。您可以从HATEOAS - 维基百科页面获得HATEOAS的非常好的概述。

了解有关此软件包的更多信息,获取完整的安装说明,并在GitHub上查看源代码 gdebrauwer/laravel-hateoas.

原文地址:https://laravel-news.com/laravel-hateoas...

译文地址:https://lmonkey.com/laravel/t/33430

发表评论

0/200
2735 点赞
2 评论
收藏
为你推荐 换一批