12 KiB
title, source_type, url, archive_url, vendor, related_branches, related_projects, tags, status, confidence, created, last_reviewed
| title | source_type | url | archive_url | vendor | related_branches | related_projects | tags | status | confidence | created | last_reviewed | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| official-doc / Google AIP-132 — Standard Methods: List | official-doc | https://google.aip.dev/132 |
|
|
|
raw | high | 2026-05-31 | 2026-05-31 |
official-doc / Google AIP-132 — Standard Methods: List
Layer:
raw/official-docs/— 외부 공식 문서의 원문 발췌·출처 기록. 검증된 요약은/ingest후wiki/concepts/에source-summary-template형식으로 별도 작성.
Parent / 활용 branch (필수)
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-api-contract-baseline | (future B14 — 현재 branch 미결) Sort parameter syntax 결정 — D7 의 sort request param 정확한 syntax (?sort=name,desc vs ?sort=-name vs ?sort=name:desc) 에 대해 AIP-132 의 order_by string 형식 ("foo desc, bar") 이 normative reference 로 기능. pagination field naming 차이 cross-cite (AIP-132: page_size/page_token snake_case proto field vs branch D7: page/size REST query string) |
출처 / Source
- 원본 URL: https://google.aip.dev/132
- 아카이브 URL: (미등록)
- 저자 / 조직: Google (API Improvement Proposals)
- 발행일: 2019-01-21
- 마지막 확인일: 2026-05-31
- AIP State: Approved
- 마지막 갱신: 2025-02-25 (ordering well-known types clarification)
왜 저장했는지 / Why archived
AIP-132 는 Google 의 resource-oriented API 설계 지침 중 List 표준 method 의 request/response signature, pagination field 명명 (page_size, page_token, next_page_token), order_by 필드의 syntax ("foo desc, bar" 형식), filter 필드의 AIP-160 연계를 normatively 정의한다. branch feature-api-contract-baseline 의 D7 (page/size/sort request param 결정) 및 미결 B14 (sort syntax) 에 대한 official-reference 근거로 보관.
핵심 인용 / Key quotes (verbatim, 5개)
인용 1 — List method 표준 signature [§Guidance, line 715–716]
"The request and response messages must match the RPC name, with
RequestandResponsesuffixes."
인용 2 — Pagination fields [§Request message, line 767–768]
"The
page_sizeandpage_tokenfields, which support pagination, must be specified on all list request messages. For more information, see AIP-158."
인용 3 — next_page_token response field [§Response message, line 809–812]
"The
next_page_tokenfield, which supports pagination, must be included on all list response messages. It must be set if there are subsequent pages, and must not be set if the response represents the final page. For more information, see AIP-158."
인용 4 — order_by syntax (descending) [§Ordering, line 828–829]
"The default sorting order is ascending. To specify descending order for a field, users append a
\" desc\"suffix; for example:\"foo desc, bar\"."
인용 5 — filter field + AIP-160 reference [§Filtering, line 850–852]
"List methods may allow clients to specify filters; if they do, the request message should contain a
string filterfield. Filtering is described in more detail in AIP-160."
인용 6 — HTTP verb (safe method) [§Guidance, line 717]
"The HTTP verb must be
GET."
Claims Extracted / 추출된 주장
이 자료가 직접 말하는 것만 claim 으로 분리한다. 프로젝트 적용 결론은
## 메모또는 branch-note 에서만 작성.
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| AIP132-C1 | List method 의 RPC 는 List prefix 를 가지며, request/response message 는 RPC 이름과 동일한 Request/Response suffix 를 must 가진다 |
[§Guidance] "The request and response messages must match the RPC name, with Request and Response suffixes." |
official-reference |
Google AIP 를 따르는 API (proto-based RPC + HTTP transcoding) | REST-only API 의 URL 또는 JSON body field 명명. 본 branch 의 REST endpoint 명명 자체는 AIP-127 (HTTP/gRPC transcoding) 별도 적용 범위 |
| AIP132-C2 | List request message 는 page_size (int32) 와 page_token (string) 필드를 must 포함해야 한다 |
[§Request message] "The page_size and page_token fields, which support pagination, must be specified on all list request messages." |
official-reference |
Google AIP 를 따르는 proto List method | REST query string 의 파라미터 명 직접 적용 불가 — proto field 명이 REST query string 으로 변환되는 매핑은 AIP-127 §6 (HTTP transcoding) 적용. 본 branch 의 page/size query param 은 이 claim 의 직접 산출이 아님 |
| AIP132-C3 | List response message 는 next_page_token (string) 필드를 must 포함해야 하며, 후속 페이지가 있으면 set, 마지막 페이지이면 must not set 이다 |
[§Response message] "The next_page_token field, which supports pagination, must be included on all list response messages. It must be set if there are subsequent pages, and must not be set if the response represents the final page." |
official-reference |
Google AIP proto List response | 본 branch 의 meta.page.total 또는 meta.page.number 같은 envelope 필드 — AIP-132 는 total_size 를 optional (may) 로만 정의하며 offset/page 번호를 response 에 요구하지 않음 |
| AIP132-C4 | order_by 필드 syntax: 기본 ascending, descending 은 " desc" suffix 로 표현 (e.g., "foo desc, bar"), comma-separated, 공백 무시, subfield 는 dot notation |
[§Ordering] "The default sorting order is ascending. To specify descending order for a field, users append a \" desc\" suffix; for example: \"foo desc, bar\"." |
official-reference |
Google AIP 를 따르는 API 의 order_by string field |
REST query string 파라미터 명 (?sort= vs ?order_by=) 자체 — AIP-132 는 proto field 명 order_by 를 정의하나 URL query param key 명 정규화는 AIP-127. ?sort=-name (마이너스 prefix 방식) 또는 ?sort=name:desc (콜론 방식) 는 AIP-132 normative syntax 와 다름 |
| AIP132-C5 | List method 의 filter 필드는 선택 사항 (may) 이며, 포함 시 string filter 타입이고 세부 문법은 AIP-160 에서 정의 |
[§Filtering] "List methods may allow clients to specify filters; if they do, the request message should contain a string filter field. Filtering is described in more detail in AIP-160." |
official-reference |
Google AIP 를 따르는 API 의 filtering 기능 | filter 문법의 구체 연산자 (예: AND, OR, 비교 연산자) — 이는 AIP-160 에서 별도 정의됨. 본 claim 은 필드 존재와 AIP-160 참조만 증명 |
| AIP132-C6 | List method 의 HTTP verb 는 must GET 이어야 하며 이는 safe method 이다 (RFC 9110 §9.2.1 GET is safe) |
[§Guidance] "The HTTP verb must be GET." |
official-reference |
Google AIP 를 따르는 List endpoint 의 HTTP method | GET 의 safe/idempotent 속성 자체 — 이는 RFC 9110 §9.2.1/9.2.2 normative. AIP-132 는 GET 을 must 로 요구하나 "safe" 또는 "idempotent" 라는 용어 자체는 본 문서에서 명시하지 않음 |
Strength 확인
AIP-132 는 Google 내부 community guideline (API Improvement Proposals) — IETF RFC 또는 W3C 표준이 아니므로 official-reference (Google 공식 벤더 가이드라인, Google API 설계의 de facto standard). official-standard (RFC/W3C 수준) 아님.
Usage Boundaries / 적용 경계
이 자료가 직접 증명하는 것
AIP132-C1: List RPC 의 request/response message naming convention (proto 기반)AIP132-C2:page_size/page_token이 List request 의 must 필드AIP132-C3:next_page_token이 List response 의 must 필드, 유/무 set 의미론AIP132-C4:order_by의 normative syntax ("foo desc, bar"형식, comma-separated, space-insignificant)AIP132-C5:filter필드가 optional (may) 이며 AIP-160 에서 문법 정의AIP132-C6: List method 의 HTTP verb 는GET강제
이 자료가 증명하지 않는 것
- REST query string 파라미터 명: AIP-132 는 proto field 명을 정의함.
page_size→ REST query?page_size=매핑은 AIP-127 (HTTP/gRPC Transcoding) 범위. 본 branch 의?page=N&size=N(camelCase 또는 단축 명) 은 AIP-132 직접 결과 아님 — project-internal 매핑 결정 - Sort query param 명:
?sort=vs?order_by=key 명 자체는 AIP-132 밖. AIP-132 는 proto field 명order_by만 정의 - Pagination 전략 (offset vs cursor): AIP-132 는
page_size/page_token(cursor-based) 을 정의하나 AIP-132 자체에서 offset-pagination 을 금지하거나 cursor 를 강제하지는 않음. AIP-158 에서 상세 정의 - Sort syntax 의 REST 직접 적용:
?sort=name,desc는 AIP-132 의"foo,bar"+"foo desc, bar"를 URL query string 으로 적용한 해석 — AIP-132 본문은 proto field value format 을 정의 ?sort=-name(마이너스 prefix 방식) 또는?sort=name:desc(콜론 방식): AIP-132 normative 가 아님." desc"suffix 방식만 normative- Filter 문법의 연산자: AIP-160 범위. 본 자료는 필드 존재와 참조만 언급
내 프로젝트에 적용하려면 추가 확인이 필요한 것
page_size/page_token→ REST?page=N&size=N변환의 project-internal 매핑 문서화 — AIP-127 참조 권고- Sort syntax 를
?sort=name,desc(AIP-132 variant) vs?sort=-name(OpenAPI community) vs?sort=name:desc(기타) 중 어느 것으로 채택할지 — D7 미결 B14 의 결정 포인트. AIP-132 기준 채택 시:?sort=foo desc, bar또는 URL 인코딩 후?order_by=foo+desc%2C+bar형태가 normative nearest - filter 문법 상세: raw/official-docs/google-aip-160-filtering 신설 후 AIP-160 참조 (현재 미존재)
- AIP-158 (
Pagination) raw 신설 시page_token의 cursor semantics 와 본 branch D7 의page/sizeoffset pagination 과의 차이 명확화 필요
메모 / Notes
- AIP-132 는 proto-first 설계 (gRPC + HTTP transcoding). REST-only API 에 직접 적용 시 proto field 명 → REST query param 변환 규칙 (AIP-127) 을 거쳐야 한다. 본 branch 의
?page=N&size=N은 project-internal 선택으로, AIP-132 준수 선언이 아님. order_by의"foo desc, bar"syntax 는 REST query string 에서?order_by=foo+desc%2C+bar(URL encoded) 또는?sort=foo desc, bar형태가 될 수 있음. 공백이 URL query string 에서+또는%20으로 인코딩되는 점을 고려한 API 문서화 필요.- AIP-132 page_size/page_token 기반 pagination 은 cursor-based (opaque token). 본 branch D7 의 offset pagination (
page/size) 과 의미론적으로 다름. cursor endpoint 추가 결정 시 AIP-158 참조 권고. total_size는 AIP-132 에서may(optional) — 본 branch 의meta.page.total이 이에 대응하지만 AIP-132 가 강제하는 것은 아님.
Related / 관련
- AIP-158 (Pagination):
raw/official-docs/google-aip-158-pagination.md(미신설 —feature-api-contract-baseline§5.2 Next-Session Raw Boost Plan 신설 예정) - AIP-160 (Filtering):
raw/official-docs/google-aip-160-filtering.md(미신설 — 신설 예정) - AIP-127 (HTTP/gRPC Transcoding — proto field → REST query param 변환): 미신설
- raw/official-docs/google-aip-185-resource-versioning — 동일 AIP 계열, versioning 근거 (D2)
- raw/official-docs/api-versioning-google-aip-180 — backward compatibility (D6)
- raw/official-docs/jsonapi-pagination-format — pagination link key 명명 표준 (D7)