GraphQL 배열 인수
GitLab GraphQL API에서 배열 인수의 크기 유효성 검사 방법과 마이그레이션 경로를 설명합니다.
GraphQL에서 배열 인수 유효성 검사 # 개요 # GitLab GraphQL API의 모든 배열 인수에는 남용 방지 및 성능 문제 예방을 위한 크기 유효성 검사가 있어야 합니다. 유효성 검사 방법 # 권장 방법: 명시적 유효성 검사 (목표 상태) # validates 옵션을 사용하여 배열 크기 제한을 명시적으로 선언합니다: argument :assignee_usernames, [GraphQL::Types::String], required: false, validates: { length: { maximum: Types::BaseArgument::MAX_ARRAY_SIZE } }, description: "Usernames of users assigned to the merge request " \ "(maximum is #{Types::BaseArgument::MAX_ARRAY_SIZE} usernames)." 장점: 명확하고 명시적 인수 정의에서 직접 확인 가능 기존 코드베이스 패턴과 일관성 유지 GraphQL-Ruby의 내장 유효성 검사 활용 자동 유효성 검사 (전환 기간) # 전환 기간 동안, 명시적인 validates: { length: { maximum: ... } } 가 없는 배열 인수는 BaseArgument 에 의해 자동으로 100개 항목으로 제한됩니다. # 이 인수는 자동으로 100개 항목으로 제한됩니다 argument :items, [GraphQL::Types::String], required: false, description: 'List of items.' 동작 방식 # BaseArgument 클래스는 스마트 감지를 구현합니다: 명시적 유효성 검사가 있는 경우 : 명시된 제한값 사용 (자동 유효성 검사 없음) 명시적 유효성 검사가 없는 경우 : 자동으로 100개 항목 제한 적용 # 명시적 유효성 검사 - 50을 제한값으로 사용 argument :limited_items, [GraphQL::Types::String], validates: { length: { maximum: 50 } }, description: 'Limited to 50 items.' # 명시적 유효성 검사 없음 - 자동으로 100개 항목으로 제한 argument :auto_limited_items, [GraphQL::Types::String], description: 'Automatically limited to 100 items.' 마이그레이션 경로 # 1단계: 자동 보호 (현재) # 모든 배열 인수는 자동으로 100개 항목 제한으로 보호됩니다. 2단계: 명시적 유효성 검사 추가 # 모든 배열 인수에 명시적인 validates 선언을 점진적으로 추가합니다: # 변경 전 (자동 유효성 검사에 의존) argument :assignee_usernames, [GraphQL::Types::String], required: false, description: 'Usernames of users assigned to the merge request.' #