Breaking

Post Top Ad

Your Ad Spot

martes, 17 de septiembre de 2019

Paquete Laravel HATEOAS

Paquete Laravel HATEOAS

Laravel HATEOAS es un paquete de Günther Debrauwer que expone la lógica de autorización de su API REST utilizando enlaces HATEOAS.
HATEOAS le permite exponer la lógica de autorización de su API REST. Este paquete facilita la adición de enlaces HATEOAS a sus recursos de API de Laravel.
El paquete define un comando artesanal para crear una nueva clase HATEOAS, que contiene métodos que generarán respuestas JSON de enlaces:
class MessageHateoas
{
    use CreatesLinks;

    /**
     * Get the HATEOAS link to view the message.
     *
     * @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]);
    }

    /**
     * Get the HATEOAS link to delete the message.
     *
     * @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]);
    }
}
Luego, en su clase de recursos de Laravel, puede incluir los enlaces utilizando el HasLinksrasgo de este paquete :
class MessageResource extends JsonResource
{
    use HasLinks;

    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     *
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'text' => $this->text,
            '_links' => $this->links(),
        ];
    }
}
Finalmente, el resultado del ejemplo anterior podría parecerse a la siguiente respuesta 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"
                }
            ]
        }
    ]
}
Si no está familiarizado con HATEOAS, significa Hypermedia como el motor del estado de la aplicación. Puede obtener una visión general bastante buena de HATEOAS en la página HATEOAS - Wikipedia .
Puede obtener más información sobre este paquete, obtener instrucciones de instalación completas y ver el código fuente en GitHub en gdebrauwer / laravel-hateoas .

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas