InfoGrab DocsInfoGrab Docs

REST API 스팸 보호 및 CAPTCHA 지원

GitLab REST API 엔드포인트에서 스팸 보호 및 CAPTCHA 기능을 추가하는 방법을 설명합니다.

모델을 REST API를 통해 수정할 수 있는 경우, 스팸 가능하거나 스팸 관련 속성을 수정할 수 있는 모든 관련 API 엔드포인트에도 지원을 추가해야 합니다. 이는 POST 및 PUT 뮤테이션을 반드시 포함하며, 모델의 기밀/공개 플래그 변경과 관련된 엔드포인트 등 다른 경우도 포함될 수 있습니다. REST 엔드포인트에 지원 추가 # 주요 단계는 다음과 같습니다: resource 에 helpers SpammableActions::CaptchaCheck::RestApiActionsSupport 를 추가합니다. Update Service 클래스 생성자에 perform_spam_check: true 를 전달합니다. Create Service에서는 기본적으로 true 로 설정되어 있습니다. Spammable 모델 인스턴스를 생성하거나 업데이트한 후 #check_spam_action_response! 를 호출하고, 생성하거나 업데이트한 인스턴스를 변수에 저장합니다. 요청의 failure 케이스에 대한 오류 처리 로직을 식별합니다. 생성 또는 업데이트가 성공하지 못한 경우입니다. 이는 Spammable 인스턴스에 오류를 추가하는 스팸 탐지 가능성을 나타냅니다. 오류는 일반적으로 render_api_error! 또는 render_validation_error! 와 유사합니다. 기존 오류 처리 로직을 with_captcha_check_rest_api(spammable: my_spammable_instance) 호출로 감싸고, 변수에 저장한 Spammable 모델 인스턴스를 spammable: 이름이 지정된 인수로 전달합니다. 이 호출은 다음을 수행합니다: 모델에 대해 필요한 스팸 검사를 수행합니다. 스팸이 탐지된 경우: Grape #error! 예외를 스팸 관련 설명 오류 메시지와 함께 발생시킵니다. 응답에 오류 필드로 추가된 관련 정보를 포함합니다. 이러한 필드에 대한 자세한 내용은 REST API 문서의 스팸으로 탐지된 요청 해결 섹션을 참조하세요. 위에서 설명한 표준 ApolloLink 또는 Axios 인터셉터 CAPTCHA 지원을 사용하는 경우, 해당 필드는 자동으로 처리되므로 필드 세부 정보를 무시할 수 있습니다. 잠재적 스팸에 대한 실패한 검사를 처리하고, 해결된 CAPTCHA 응답으로 요청을 재제출하기 위해 GraphQL API를 직접 사용하려는 경우에만 관련이 있습니다. 다음은 snippets 리소스의 post 및 put 액션에 대한 예시입니다: module API class Snippets < ::API::Base #... resource :snippets do # This helper provides `#with_captcha_check_rest_api` helpers SpammableActions::CaptchaCheck::RestApiActionsSupport post do #... service_response = ::Snippets::CreateService.new(project: nil, current_user: