CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

23 April, 2021

Laravel HATEOAS Package

 Programing Coderfunda     April 23, 2021     Packages, php     No comments   

 

Laravel HATEOAS Package

Laravel HATEOAS is a package by Günther Debrauwer which exposes the authorization logic of your REST API using HATEOAS links.

HATEOAS allows you to expose the authorization logic of your REST API. This package makes it easy to add HATEOAS links to your Laravel API resources.

The package defines an artisan command for creating a new HATEOAS class, which contains methods that will generate links JSON responses:

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]);
}
}

Then in your Laravel resources class, you can include the links using this package’s HasLinks trait:

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(),
];
}
}

Finally, the result of the above example might look like the following JSON response:

{
"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"
}
]
}
]
}

If you are not familiar with HATEOAS, it stands for Hypermedia As The Engine of Application State. You can get a pretty good overview of HATEOAS from the HATEOAS – Wikipedia page.

You can learn more about this package, get full installation instructions, and view the source code on GitHub at gdebrauwer/laravel-hateoas.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • Run operations once after deployment with Laravel You can use the One Time Operations package for Laravel to run code that should only run once after deployment. With this package, you… Read More
  • Laravel Envoy Task Runner Laravel Envoy provides a clean, minimal syntax for defining common tasks you run on your remote servers. Using a Blade style syntax, you can eas… Read More
  • Laravel Run One Time Operations After Deployment With PHPYou can utilize the One Time Activities bundle for Laravel to run code that ought to just pursue once arrangement. With this bundle, you can make acti… Read More
  • Laravel Convert HTML Strings to Translation Functions HTML String Affixer is a package for Laravel to make projects multilingual. This package finds text strings in HTML and replaces them with … Read More
  • Trucker – Mapping remote API resources ActiveResource style Trucker is a PHP package for mapping remote API resources (usually RESTful) as models in an ActiveResource style. The benefit is easier use of r… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Vue3 :style backgroundImage not working with require
    I'm trying to migrate a Vue 2 project to Vue 3. In Vue 2 I used v-bind style as follow: In Vue 3 this doesn't work... I tried a...
  • SQL ORDER BY Keyword
      The SQL ORDER BY Keyword The ORDER BY keyword is used to sort the result-set in ascending or descending order. The ORDER BY keyword sorts ...
  • failed to load storage framework cache laravel excel
       User the export file and controller function  ..         libxml_use_internal_errors ( true ); ..Good To Go   public function view () : ...
  • Features CodeIgniter
    Features CodeIgniter There is a great demand for the CodeIgniter framework in PHP developers because of its features and multiple advan...
  • Enabling authentication in swagger
    I created a asp.net core empty project running on .net6. I am coming across an issue when I am trying to enable authentication in swagger. S...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Simplify API Responses with Fluent Methods - 6/6/2025
  • Fathom Analytics Events for Laravel Livewire - 6/6/2025
  • Replace String Prefixes Precisely with Laravel's replaceStart Method - 5/31/2025
  • Clean Up Your Code with the whenHas Method - 6/5/2025
  • Laravel OpenRouter - 6/4/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda