https://docs.strapi.io/cms/api/document-service#parameters-5
Strapi API Query Parameters
Strapi의 API에서 사용할 수 있는 주요 쿼리 파라미터(Query Parameters) 옵션들을 정리했습니다.
1. populate (관계 데이터 포함)
관계 데이터를 가져오기 위해 사용됩니다.
예제:
const query = qs.stringify({ populate: 'author' }); const url = `http://localhost:1337/api/posts?${query}`;
???? populate: 'author' → Post와 연결된 Author 데이터를 포함.
특정 필드만 포함:
const query = qs.stringify({ populate: { author: { fields: ['name', 'email'] } } }, { encodeValuesOnly: true });
2. fields (특정 필드만 선택)
가져올 필드를 제한하여 응답 크기를 줄일 수 있습니다.
예제:
const query = qs.stringify({ fields: ['title', 'slug', 'createdAt'] });
3. filters (데이터 필터링)
특정 조건을 만족하는 데이터만 가져올 수 있습니다.
특정 값으로 필터링:
const query = qs.stringify({ filters: { category: { name: 'Technology' } } });
연산자(Operators):
연산자설명예시
$eq값이 일치{ title: { $eq: "Hello" } }
$ne값이 다름{ title: { $ne: "Hello" } }
$lt작은 값{ price: { $lt: 100 } }
$lte작거나 같은 값{ price: { $lte: 100 } }
$gt큰 값{ price: { $gt: 100 } }
$gte크거나 같은 값{ price: { $gte: 100 } }
$contains특정 문자열 포함{ title: { $contains: "Hello" } }
4. sort (정렬)
데이터를 정렬할 수 있습니다.
예제:
const query = qs.stringify({ sort: ['createdAt:desc'] });
???? createdAt 기준으로 내림차순 정렬.
5. pagination (페이징)
데이터를 페이지 단위로 가져오는 기능.
페이지별 데이터 가져오기:
const query = qs.stringify({ pagination: { page: 1, pageSize: 10 } });
6. publicationState (공개/초안 상태 필터링)
공개된 데이터 또는 초안 데이터를 가져올 수 있습니다.
예제:
const query = qs.stringify({ publicationState: 'live' });
7. locale (다국어 지원)
특정 언어의 데이터를 가져올 수 있습니다.
예제:
const query = qs.stringify({ locale: 'ko' });
8. populateDeep (모든 관계 데이터 가져오기)
여러 단계의 관계 데이터를 포함하려면 populateDeep을 사용합니다.
예제:
const query = qs.stringify({ populateDeep: 3 });
3단계까지 관계 데이터를 포함하여 가져오기.
정리
옵션설명
populate관계 데이터 포함
fields특정 필드만 선택
filters데이터 필터링
sort데이터 정렬
pagination페이지 단위로 가져오기
publicationState공개/미리보기 상태 지정
locale특정 언어의 데이터 가져오기
populateDeep모든 관계 데이터 포함
## REST API 파라미터 Strapi의 REST API를 사용할 때, 다양한 쿼리 파라미터를 활용하여 데이터를 필터링, 정렬, 페이지네이션 및 특정 데이터 선택이 가능합니다: | 파라미터 | 설명 | | --- | --- | | `filters` | 특정 조건에 따라 응답 필터링 | | `locale` | 특정 언어의 콘텐츠 선택 | | `status` | 초안 및 게시 상태 선택 | | `populate` | 관련 콘텐츠, 컴포넌트 또는 동적 영역 포함 | | `fields` | 반환할 특정 필드만 선택 | | `sort` | 결과 정렬 | | `pagination` | 페이지 크기 및 번호 제어 | ## 컨트롤러에서 쿼리 파라미터 접근하기 커스텀 컨트롤러에서는 컨텍스트 객체를 통해 쿼리 파라미터에 접근할 수 있습니다: // 전체 쿼리 객체 접근 ctx.request.query // 특정 파라미터 접근 ctx.request.query.sort ctx.request.query.filters ctx.request.query.populate ctx.request.query.fields ctx.request.query.pagination ctx.request.query.publicationState ctx.request.query.locale ## 복잡한 쿼리 구성하기 복잡한 쿼리의 경우, Strapi는 수동으로 쿼리 URL을 생성하는 대신 `qs` 라이브러리 사용을 권장합니다. Strapi는 이를 돕기 위한 대화형 쿼리 빌더 도구를 제공합니다: // 쿼리 파라미터 객체 예시 { sort: ['title:asc'], filters: { title: { $eq: 'hello', }, }, populate: { author: { fields: ['firstName', 'lastName'] } }, fields: ['title'], pagination: { pageSize: 10, page: 1, }, status: 'published', locale: ['en'], } ## 요청 정보 컨텍스트 객체를 통해 다른 요청 정보에도 접근할 수 있습니다: ctx.request.ip // 요청자의 IP 주소 ctx.request.path // 요청된 리소스의 경로 ctx.request.method // HTTP 메소드 (GET, POST 등) ctx.request.headers // 요청 헤더
댓글 ( 0)
댓글 남기기