GraphQL API 스팸 방지 및 CAPTCHA 지원
모델이 GraphQL API를 통해 수정될 수 있는 경우, 스팸 가능성 있는 또는 스팸 관련 속성을 수정할 수 있는 모든 관련 GraphQL 변이에 대한 지원도 추가해야 합니다. 이는 반드시 Create 및 Update 변이를 포함하지만, 모델의 기밀/공개 플래그를 변경하는 것과 관련된 다른 변이도 포함될 수 있습니다.
GraphQL 변이에 대한 지원 추가
주요 단계는 다음과 같습니다:
- 
    변이에 include Mutations::SpamProtection을 사용하십시오.
- 
    Update Service 클래스 생성자에 perform_spam_check: true를 전달하십시오.
 Create Service에서는 기본적으로true로 설정되어 있습니다.
- 
    Spammable모델 인스턴스를 생성하거나 업데이트한 후,#check_spam_action_response!를 호출하고 모델 인스턴스를 전달하십시오. 이 호출은:- 모델에 대한 필요한 스팸 검사를 수행합니다.
- 스팸이 감지되면:
        - 
GraphQL::ExecutionError예외를 발생시킵니다.
- 
extensions:매개변수를 통해 응답에 오류 필드를 추가하여 관련 정보를 포함합니다.
 이러한 필드에 대한 자세한 내용은 GraphQL API 문서의
 스팸으로 감지된 변이 해결 섹션을 참조하십시오.
 
- 
 주의: 위에서 설명한 표준 ApolloLink 또는 Axios 인터셉터 CAPTCHA 지원을 사용하는 경우 
 필드 세부정보는 자동으로 처리되므로 무시할 수 있습니다.
 이는 GraphQL API를 직접 사용하여 잠재적 스팸에 대한 실패한 검사를 처리하고
 해결된 CAPTCHA 응답으로 요청을 다시 제출하려고 할 때 관련이 있습니다.
예를 들어:
module Mutations
  module Widgets
    class Create < BaseMutation
      include Mutations::SpamProtection
      def resolve(args)
        service_response = ::Widgets::CreateService.new(
          project: project,
          current_user: current_user,
          params: args
        ).execute
        widget = service_response.payload[:widget]
        check_spam_action_response!(widget)
        # 감지된 가능성 있는 스팸이 있을 경우, 
        # `#check_spam_action_response!`에 의해 예외가 발생하므로   
        # 정상적인 해결 반환 로직이 아래에 따라올 수 있습니다.
      end
    end
  end
end
GraphQL API에서 CAPTCHA 동작을 테스트하는 방법에 대한 지침은 
탐색적 테스트 섹션을 참조하십시오.
 도움말
        도움말