laravel-json-api / laravel
JSON:API for Laravel applications.
Installs: 758 924
Dependents: 14
Suggesters: 0
Security: 0
Stars: 544
Watchers: 17
Forks: 43
Open Issues: 72
Requires
- php: ^8.2
- ext-json: *
- laravel-json-api/core: ^4.1
- laravel-json-api/eloquent: ^4.1
- laravel-json-api/encoder-neomerx: ^4.0
- laravel-json-api/exceptions: ^3.0
- laravel-json-api/spec: ^3.0
- laravel-json-api/validation: ^4.0
- laravel/framework: ^11.0
Requires (Dev)
- laravel-json-api/testing: ^3.0
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.5
- dev-develop / 4.x-dev
- v4.1.0
- v4.0.0
- v3.4.0
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.0
- v2.6.0
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v1.1.0
- v1.0.1
- v1.0.0
- v1.0.0-beta.5
- v1.0.0-beta.4
- v1.0.0-beta.3
- v1.0.0-beta.2
- v1.0.0-beta.1
- v1.0.0-alpha.5
- v1.0.0-alpha.4
- v1.0.0-alpha.3
- v1.0.0-alpha.2
- v1.0.0-alpha.1
- dev-main
- dev-feature/core-v5
- dev-junk-4.x
This package is auto-updated.
Last update: 2024-11-05 13:32:56 UTC
README
JSON:API for Web Artisans
Implement feature-rich JSON:API compliant APIs in your Laravel applications. Build your next standards-compliant API today.
Why use JSON:API and Laravel JSON:API?
Great question! Here's some reasons from this excellent article by Denisa Halmaghi:
Why Use JSON:API?
- Standardised, consistent APIs.
- Feature rich - some of which are: sparse fieldsets (only fetch the fields you need), filtering, sorting, pagination, eager loading for relationships (includes, which solve the N+1 problem).
- Easy to understand.
Why use Laravel JSON:API?
- Saves a lot of development time.
- Highly maintainable code.
- Great, extensive documentation.
- Strong conventions, but also highly customisable.
- Makes use of native Laravel features such as policies and form requests to make the shift easier for developers.
- Beautiful, expressive Nova-style schemas.
- Fully testable via expressive test helpers.
class PostSchema extends Schema { /** * The model the schema corresponds to. * * @var string */ public static string $model = Post::class; /** * The maximum include path depth. * * @var int */ protected int $maxDepth = 3; /** * Get the resource fields. * * @return array */ public function fields(): array { return [ ID::make(), BelongsTo::make('author')->type('users')->readOnly(), HasMany::make('comments')->readOnly(), Str::make('content'), DateTime::make('createdAt')->sortable()->readOnly(), DateTime::make('publishedAt')->sortable(), Str::make('slug'), BelongsToMany::make('tags'), Str::make('title')->sortable(), DateTime::make('updatedAt')->sortable()->readOnly(), ]; } /** * Get the resource filters. * * @return array */ public function filters(): array { return [ WhereIdIn::make($this), WhereIn::make('author', 'author_id'), ]; } /** * Get the resource paginator. * * @return Paginator|null */ public function pagination(): ?Paginator { return PagePagination::make(); } }
Documentation
See our website, laraveljsonapi.io
Tutorial
New to JSON:API and/or Laravel JSON:API? Then the Laravel JSON:API tutorial is a great way to learn!
Follow the tutorial to build a blog application with a JSON:API compliant API.
Installation
Install using Composer
composer require laravel-json-api/laravel
See our documentation for further installation instructions.
Upgrading
When upgrading you typically want to upgrade this package and all our related packages. This is the recommended way:
composer require laravel-json-api/laravel --no-update
composer require laravel-json-api/testing --dev --no-update
composer up "laravel-json-api/*" cloudcreativity/json-api-testing
Example Application
To view an example Laravel application that uses this package, see the Tutorial Application.
License
Laravel JSON:API is open-sourced software licensed under the MIT License.