API 게이트웨이에서 Golang 기능을 사용하여 API 요청 매개변수를 확인하면 다음과 같은 이점이 있습니다. 유효하지 않거나 악의적인 입력이 백엔드 시스템에 들어오는 것을 방지할 수 있습니다. 요청 본문이 비어 있는지 확인하세요. 필수 필드가 있는지 확인하세요. 숫자 필드가 숫자인지 확인하세요. 문자열 필드가 정규식을 준수하는지 확인하세요.
API 게이트웨이에서 매개변수 검증을 위해 Golang 함수 사용
소개
클라우드 기반 애플리케이션을 구축할 때 매개변수 검증은 유효하지 않거나 악의적인 입력이 백엔드 시스템에 입력되는 것을 방지하는 데 중요합니다. API 게이트웨이는 API 트래픽을 관리하고 매개변수 검증과 같은 보안 기능을 제공하는 중간 계층입니다. 이 튜토리얼에서는 Golang 함수를 사용하여 API Gateway에서 API 요청 매개변수를 검증하는 방법을 안내합니다.
전제 조건
프로젝트 설정
새 Golang 프로젝트 만들기:
go mod init my-validation-function
Golang 함수 작성
import ( "context" "errors" "fmt" "net/http" "regexp" "strconv" "github.com/cloudevents/sdk-go/v2/event" )
함수 배포 자체 API 게이트웨이 배포 메커니즘을 사용하여 함수 배포 및 구성 특정 API 요청을 인증합니다. 특정 배포 단계는 API 게이트웨이 설명서를 참조하세요.
실용 사례 두 개의 쿼리 매개변수 name
및 age
를 수신하는 API 엔드포인트 /validate
가 있다고 가정해 보겠습니다. 우리가 작성한 Golang 함수를 사용하면 입력이 다음 규칙을 준수하는지 확인할 수 있습니다. /validate
,接收name
和age
两个查询参数。使用我们编写的Golang函数,可以验证输入是否符合以下规则:
name
是必填项,只能包含字母。age
name
은 필수이며 문자만 포함할 수 있습니다. age
는 필수이며 숫자여야 합니다.
func validate(ctx context.Context, event event.Event) (*http.Response, error) { // 获取HTTP请求正文 request := event.HTTP body := request.Body // 验证请求正文的必需字段 if body == nil || len(body) == 0 { return nil, errors.New("request body is empty") } // 获取字段值 name := request.URL.Query().Get("name") age := request.URL.Query().Get("age") // 验证字段值 if name == "" { return nil, errors.New("name is required") } if age == "" { return nil, errors.New("age is required") } // 验证age是否为数字 if _, err := strconv.Atoi(age); err != nil { return nil, errors.New("age must be a number") } // 验证name是否符合正则表达式 nameRegex := regexp.MustCompile("[a-zA-Z]+") if !nameRegex.MatchString(name) { return nil, errors.New("name must contain only letters") } // 返回验证成功的响应 return &http.Response{ StatusCode: http.StatusOK, Body: http.NoBody, }, nil }
GET /validate?name=John&age=30
위 내용은 API 게이트웨이에서 매개변수 검증을 위해 Golang 함수 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!