graphql
최선의 실무로 안전한 GraphQL API 구축하기
GraphQL 의 유연성은 적절한 제어 장치 없이는 성능 및 보안 문제로 이어질 수 있습니다. 이 스킬은 DataLoader 사용, 쿼리 깊이 제한, 권한 부여에 대한 검증된 패턴을 제공하여 프로덕션 준비가 된 GraphQL API 를 구축할 수 있게 합니다.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"graphql" 사용 중입니다. 이커머스 제품 카탈로그용 스키마 설계
예상 결과:
- Product, Category, Review 타입을 갖춘 GraphQL 스키마
- discountPrice 와 같은 선택적 필드에 대한 적절한 nullability
- 제품 리뷰에 대한 페이지네이션을 위한 connections
- input 타입을 사용한 CRUD 연산을 위한 뮤테이션
"graphql" 사용 중입니다. 사용자 post 리졸버에서 N+1 쿼리 수정
예상 결과:
- 사용자 ID 조회를 배치하는 DataLoader 구현
- 중복 쿼리 방지를 위해 사용자 ID 로 키된 캐시
- Apollo Server context 와 통합
- N 개의 쿼리에서 1 개의 배치된 쿼리로 성능 개선
보안 감사
안전This skill is a documentation file containing GraphQL best practices and patterns. Static analysis flagged false positives: line 69 references related skills (not shell execution), and lines 3, 22, 34, 63, 72 contain markdown content (not cryptographic code). No executable code or security risks detected.
품질 점수
만들 수 있는 것
새로운 API 를 구축하는 백엔드 개발자
초기부터 적절한 성능 최적화 및 보안 제어 장치를 갖춘 프로덕션 준비 GraphQL API 를 설계하고 구현합니다.
GraphQL 을 통합하는 프론트엔드 팀
React 애플리케이션을 위해 정규화된 캐싱 및 효율적인 데이터 페칭 패턴으로 Apollo Client 를 설정합니다.
기존 API 를 감사하는 테크 리드
누락된 DataLoader, 제한 없는 쿼리 깊이, 권한 부여 간극과 같은 일반적인 GraphQL 안티패턴을 식별하고 수정합니다.
이 프롬프트를 사용해 보세요
User, Post, Comment 타입을 갖춘 블로그용 GraphQL 스키마를 생성하세요. 적절한 nullability, 관계, 그리고 쿼리와 뮤테이션으로서의 일반적인 CRUD 연산을 포함하세요.
post 에 대한 author 를 페치하는 GraphQL 리졸버가 있습니다. 각 post 리졸버가 별도의 데이터베이스 쿼리를 실행합니다. 이러한 쿼리를 배치하고 캐싱하도록 DataLoader 를 구현하는 방법을 보여주세요.
깊게 중첩된 GraphQL 쿼리로 인한 DoS 공격을 방지하기 위해 Apollo Server 에 쿼리 깊이 제한 및 복잡도 분석을 설정하세요. 구성 및 오류 처리를 포함하세요.
GraphQL 리졸버에서 필드 레벨 권한 부여를 구현하는 방법을 보여주세요. 일부 필드는 인증된 사용자 또는 특정 역할을 가진 사용자만 볼 수 있어야 합니다.
모범 사례
- 항상 DataLoader 를 사용하여 데이터베이스 쿼리를 배치하고 N+1 문제 방지
- DoS 공격으로부터 보호하기 위해 쿼리 깊이와 복잡도 제한
- 스키마 디렉티브뿐만 아니라 리졸버에서도 권한 부여 구현
피하기
- DataLoader 없이 리졸버에서 직접 데이터베이스 호출 수행
- GraphQL 엔드포인트에서 제한 없는 쿼리 깊이 허용
- 권한 부여 로직을 스키마 디렉티브에만 의존