Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan fungsi Golang untuk pengesahan parameter dalam get laluan API

Menggunakan fungsi Golang untuk pengesahan parameter dalam get laluan API

王林
王林asal
2024-05-01 11:18:021042semak imbas

Dalam get laluan API, menggunakan fungsi Golang untuk mengesahkan parameter permintaan API boleh: Menghalang input yang tidak sah atau berniat jahat daripada memasuki sistem bahagian belakang. Sahkan bahawa isi permintaan kosong. Sahkan bahawa medan yang diperlukan wujud. Sahkan bahawa medan berangka ialah nombor. Sahkan bahawa medan rentetan mematuhi ungkapan biasa. . Gerbang API ialah lapisan perantara yang mengurus trafik API dan menyediakan ciri keselamatan seperti pengesahan parameter. Tutorial ini akan membimbing anda tentang cara menggunakan fungsi Golang untuk mengesahkan parameter permintaan API dalam Gerbang API.

Menggunakan fungsi Golang untuk pengesahan parameter dalam get laluan APIPrasyarat

Persekitaran Golang yang dipasang

Gerbang API yang digunakan Pengetahuan pengaturcaraan Golang asas

Sediakan projek baharu

:Sediakan projek baharu
  • go mod init my-validation-function
  • Import pakej yang diperlukan :
  • import (
     "context"
     "errors"
     "fmt"
     "net/http"
     "regexp"
     "strconv"
    
     "github.com/cloudevents/sdk-go/v2/event"
    )

Tulis fungsi Golang

  1. Takrifkan fungsi Golang untuk mengesahkan parameter permintaan:
  2. 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
    }
  3. Gunakan fungsi API anda sendiri
gunakan mekanisme get anda sendiri, gunakan mekanisme API anda sendiri untuk mengesahkan permintaan API tertentu. Lihat dokumentasi API Gateway untuk langkah-langkah penggunaan tertentu.

Kes praktikal

    Andaikan anda mempunyai titik akhir API /validate yang menerima dua parameter pertanyaan: name dan age. Menggunakan fungsi Golang yang kami tulis, anda boleh mengesahkan bahawa input mematuhi peraturan berikut:
  1. nama diperlukan dan hanya boleh mengandungi huruf.
umur diperlukan dan mestilah nombor.


Pengesahan ujian

Uji kefungsian pengesahan menggunakan klien atau penyemak imbas REST:
/validate,接收nameage两个查询参数。使用我们编写的Golang函数,可以验证输入是否符合以下规则:

  • name是必填项,只能包含字母。
  • age Hantar permintaan dengan parameter yang sah:
  • rreee

Hantar permintaan dengan parameter yang tidak sah kesimpulan
Dengan menggunakan fungsi Golang, anda boleh melaksanakan pengesahan parameter yang kukuh dalam get laluan API anda, memastikan kualiti data pada permintaan API dan menghalang potensi kelemahan keselamatan.

Atas ialah kandungan terperinci Menggunakan fungsi Golang untuk pengesahan parameter dalam get laluan API. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn