쿼리 파라미터
Orion은 API 소비자가 쿼리 파라미터를 사용해 소프트 삭제 가능한 리소스와 상호작용하고, 다른 연관 리소스(특정 모델에 연관관계로 정의된 리소스)를 응답에 함께 포함하고, 연관관계나 필드를 집계하고, 응답으로 반환할 리소스 수(페이지네이션 제한)를 지정할 수 있도록 합니다.
소프트 삭제
삭제된(trashed) 리소스 반환
with_trashed 쿼리 파라미터를 사용하면 삭제된 리소스를 포함한 모든 리소스를 반환할 수 있습니다.
only_trashed 쿼리 파라미터는 소프트 삭제된 리소스만 반환하도록 API에 지시합니다.
이 파라미터들은 표준 리소스와 연관관계 리소스 모두의 index, search, show 엔드포인트에서 사용할 수 있습니다.
(GET) https://myapp.com/api/posts?with_trashed=true
강제 삭제
마지막으로, force 쿼리 파라미터를 사용하면 리소스를 영구적으로 삭제할 수 있습니다. 이 파라미터는 표준 리소스와 연관관계 리소스 모두의 destroy 엔드포인트에서 사용할 수 있습니다.
(DELETE) https://myapp.com/api/posts/5?force=true
페이지네이션 제한
기본적으로 index 또는 search 엔드포인트는 페이지당 15개의 엔티티를 반환합니다. 이를 변경하려면 limit 메서드를 사용하세요:
<?php
namespace App\Http\Controllers\Api;
use Orion\Http\Controllers\Controller;
class PostsController extends Controller
{
...
/**
* 기본 페이지네이션 제한.
*
* @return int
*/
public function limit() : int
{
return 20;
}
...
}
페이지당 특정 개수의 엔티티를 반환하도록 API에 지시하려면 URL에 limit 쿼리 파라미터를 포함해야 합니다.
(GET) https://myapp.com/api/posts?limit=30
limit 쿼리 파라미터에 지정한 값은 컨트롤러의 limit 메서드에 지정한 값을 항상 덮어쓰지만, maxLimit 메서드에 지정한 값을 초과할 수는 없습니다.최대 페이지네이션 제한
기본적으로 API에 요청할 수 있는 엔티티 수에는 제한이 없습니다. 이를 변경하려면 maxLimit 메서드를 사용하세요:
<?php
namespace App\Http\Controllers\Api;
use Orion\Http\Controllers\Controller;
class PostsController extends Controller
{
...
/**
* 최대 페이지네이션 제한.
*
* @return int
*/
public function maxLimit() : int
{
return 100;
}
...
}
집계하기
먼저 집계에 사용할 연관관계와 필드를 허용 목록에 등록해야 합니다.
집계 결과를 반환하도록 API에 지시하려면 URL에 연관관계 또는 필드를 쉼표로 구분한 목록과 함께 해당 쿼리 파라미터를 포함해야 합니다.
(GET) https://myapp.com/api/posts?with_count=user,meta
(GET) https://myapp.com/api/posts?with_exists=user,meta
(GET) https://myapp.com/api/users?with_avg=posts.stars
(GET) https://myapp.com/api/users?with_sum=posts.stars
(GET) https://myapp.com/api/users?with_min=posts.stars
(GET) https://myapp.com/api/users?with_max=posts.stars
연관관계 포함
먼저 연관관계를 허용 목록에 등록해야 합니다.
연관관계를 반환하도록 API에 지시하려면 URL에 연관관계를 쉼표로 구분한 목록과 함께 include 쿼리 파라미터를 포함해야 합니다.
(GET) https://myapp.com/api/posts?include=user,meta