Orion for Laravel

Laravel로 REST API를 만드는 가장 간단한 방법

Terminal
composer require tailflow/laravel-orion
간단하지만 강력합니다
익숙한 Laravel의 간결함 그대로, Eloquent 모델과 연관관계를 위한 완전한 기능의 REST API를 제공합니다.
사용하고 배우기 쉽습니다
요청 클래스, 정책, API 리소스 등 Laravel의 표준 기능을 활용합니다.
SDK와 OpenAPI 명세
TypeScript SDK와 OpenAPI 명세를 기본 제공합니다.

먼저 컨트롤러를 정의하세요

이후 컨트롤러에서 작업 훅, 필터링·검색 가능한 속성, 포함 가능한 연관관계 등을 설정하게 됩니다.

<?php

namespace App\Http\Controllers\Api;

use App\Models\Post;
use Orion\Http\Controllers\Controller;

class PostsController extends Controller
{
    /**
    * 모델의 완전한 클래스 이름
    */
    protected $model = Post::class; // 또는 "App\Models\Post"
}

다음으로 라우트를 등록하세요

Orion은 모델 또는 연관관계 API 리소스 전체를 코드 한 줄로 등록하는 방법을 제공합니다.

api.php
<?php

use Illuminate\Support\Facades\Route;
use Orion\Facades\Orion;
use App\Http\Controllers\PostsController;
use App\Http\Controllers\PostTagsController;

Route::group(['as' => 'api.'], function() {
    Orion::resource('posts', PostsController::class)->withSoftDeletes();
    Orion::morphToManyResource('posts', 'tags', PostTagsController::class);
});

마지막으로 완전한 기능을 갖춘 REST API를 사용하세요

이제 표준화된 API를 통해 게시물과 태그를 관리할 수 있습니다.

API를 통해 노출하는 모델에 대한 정책이 있는지 확인하세요.
또는 로컬 테스트 시에는 DisableAuthorization 트레이트 사용을 고려할 수 있습니다. 정책이 등록되지 않았거나 잘못된 경우 발생하는 403 오류를 피할 수 있습니다.
+-----------+------------------------------+-----------------------------+------------------------------------------------------------+------------+
| Method    | URI                          | Name                        | Action                                                     | Middleware |
+-----------+------------------------------+-----------------------------+------------------------------------------------------------+------------+
| GET|HEAD  | api/posts                    | api.posts.index             | App\Http\Controllers\Api\PostsController@index             | api        |
| POST      | api/posts/search             | api.posts.search            | App\Http\Controllers\Api\PostsController@index             | api        |
| POST      | api/posts                    | api.posts.store             | App\Http\Controllers\Api\PostsController@store             | api        |
| GET|HEAD  | api/posts/{post}             | api.posts.show              | App\Http\Controllers\Api\PostsController@show              | api        |
| PUT|PATCH | api/posts/{post}             | api.posts.update            | App\Http\Controllers\Api\PostsController@update            | api        |
| DELETE    | api/posts/{post}             | api.posts.destroy           | App\Http\Controllers\Api\PostsController@destroy           | api        |
| POST      | api/posts/{post}/restore     | api.posts.restore           | App\Http\Controllers\Api\PostsController@restore           | api        |
| POST      | api/posts/batch              | api.posts.batchStore        | App\Http\Controllers\Api\PostsController@batchStore        | api        |
| PATCH     | api/posts/batch              | api.posts.batchUpdate       | App\Http\Controllers\Api\PostsController@batchUpdate       | api        |
| DELETE    | api/posts/batch              | api.posts.batchDestroy      | App\Http\Controllers\Api\PostsController@batchDestroy      | api        |
| POST      | api/posts/batch/restore      | api.posts.batchRestore      | App\Http\Controllers\Api\PostsController@batchRestore      | api        |

OpenAPI 명세 생성

명령어 하나만 실행하면 OpenAPI 명세를 자동으로 생성할 수 있습니다.

Terminal
php artisan orion:specs