Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bina get laluan API menggunakan bahasa Go

Bina get laluan API menggunakan bahasa Go

PHPz
PHPzasal
2023-06-18 09:07:431309semak imbas

Dengan populariti seni bina perkhidmatan mikro, gerbang API, sebagai bahagian penting dalam seni bina perkhidmatan mikro, semakin dihargai oleh perusahaan. Gerbang API terutamanya bertindak sebagai fasad luaran, menyediakan titik masuk dan bertanggungjawab untuk satu siri fungsi seperti penukaran protokol, pengimbangan beban teragih, pengesahan keselamatan dan pengurusan API. Dalam banyak senario aplikasi, get laluan API bukan sahaja menyelesaikan banyak masalah di peringkat teknikal, tetapi juga mencapai faedah seperti lelaran pantas dan pengembangan fleksibel di peringkat perniagaan.

Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membina get laluan API berasaskan Kong, termasuk menggunakan Kong untuk mengurus API dan Pemalam serta menggunakan bahasa Go dan API Kong untuk mengendalikan konfigurasi Kong.

1. Pengenalan kepada Kong

Kong ialah gerbang API sumber terbuka yang menyediakan rangkaian lengkap fungsi pengurusan dan keselamatan API serta boleh dijalankan dalam pelbagai persekitaran. Ia terutamanya menyediakan alatan pengurusan seperti pengimbangan beban, penemuan perkhidmatan, penghalaan, pengesahan, kebenaran, pengehadan semasa, pemantauan dan pemalam. Kong menggunakan Nginx sebagai pelayan proksi dan menggunakan mekanisme pemalam untuk menambah pelbagai fungsi lanjutan pada trafik HTTP. Pemalam Kong boleh didayakan mengikut keperluan, supaya Kong dapat memenuhi pelbagai senario dan keperluan perniagaan tertentu, jadi ia juga sangat popular.

2. Gunakan Kong untuk mengurus API dan Pemalam

  1. Memasang Kong

Anda boleh memilih persekitaran yang berbeza untuk pemasangan melalui panduan pemasangan pada pegawai Kong laman web. Berikut ialah Ubuntu sebagai contoh:

$ echo "deb https://kong.bintray.com/kong-deb `lsb_release -sc` main" | sudo tee -a /etc/apt/sources.list
$ curl -o bintray.key https://bintray.com/user/downloadSubjectPublicKey?username=bintray
$ sudo apt-key add bintray.key
$ sudo apt-get update && sudo apt-get install -y kong

Selepas pemasangan berjaya, fail konfigurasi Kong akan dijana dalam direktori /etc/kong.

  1. Lancarkan Kong
$ kong start
  1. Urus API

Gunakan API Pentadbiran Kong untuk mengurus API.

$ curl -i -X POST 
  --url http://localhost:8001/apis/ 
  --data 'name=helloworld' 
  --data 'uris=/hello' 
  --data 'upstream_url=http://example.com/hello'

Contoh di atas mencipta API bernama helloworld melalui Admin API, URI penghalaan ialah /hello, dan alamat pelayan huluan ialah http://example.com/hello Dengan cara ini, hanya akses http ://localhost :8000/hello, anda boleh mengakses http://example.com/hello.

  1. Urus Pemalam

Pemalam boleh ditambah dengan mudah menggunakan Kong, mempertingkatkan lagi keupayaan API.

$ curl -i -X POST 
  --url http://localhost:8001/apis/helloworld/plugins/ 
  --data 'name=key-auth'

Contoh di atas menambah pemalam bernama key-auth pada API helloworld melalui API Pentadbiran. Pemalam ini digunakan untuk pengesahan berdasarkan Kunci API.

3 Gunakan bahasa Go dan API Kong untuk mengendalikan konfigurasi Kong

Selain menggunakan API Pentadbir untuk mengurus API dan Pemalam, anda juga boleh menggunakan API RESTful yang disediakan oleh Kong untuk lebih halus. -kawalan berbutir Ia sepenuhnya Ia mematuhi model data dalaman Kong dan lebih mudah daripada API Admin.

Di sini kami akan menggunakan bahasa Go dan menggabungkannya dengan Kong Client SDK untuk mengendalikan konfigurasi Kong.

  1. Pasang Kong Client SDK
$ go get github.com/Kong/go-kong/kong
  1. Buat konfigurasi Kong
conf := kong.Configuration{
  KongAdminURL: "http://localhost:8001", // Kong Admin接口地址
  KongURL: "http://localhost:8000", // Kong代理服务地址
}
  1. Buat API dan Laluan
api := &kong.Api{
  Name: kong.String("helloworld"),
  RequestHost: kong.String("example.com"),
  UpstreamURL: kong.String("http://example.com/hello"),
}

route := &kong.Route{
  Name: kong.String("hello-route"),
  Paths: kong.StringSlice([]string{"/hello"}),
  Methods: kong.StringSlice([]string{"GET"}),
}

Selepas menciptanya, anda boleh menggunakan kod berikut untuk mengaitkannya:

service, err := kong.CreateServiceWithDefaults(conf, api) // 用默认配置创建Service
if err != nil {
  panic(err)
}

route, err = kong.CreateRouteWithDefaults(conf, route, service)
if err != nil {
  panic(err)
}

Dengan cara ini, fail bernama helloworld dicipta, URI penghalaan ialah /hello, dan alamat pelayan huluan ialah http:// example.com/hello, Laluan diakses menggunakan permintaan GET.

  1. Tambah Pemalam

Menambah Pemalam juga sangat mudah Di sini kami menambah pemalam Pengesahan berasaskan Token untuk pengesahan pengguna. Kodnya adalah seperti berikut:

plugin := &kong.Plugin{
  Name: kong.String("jwt"),
  Config: kong.Configuration{
    "anonymous": "true",
  },
}
route.Plugins = []*kong.Plugin{plugin}

_, err = kong.UpdateRouteWithDefaults(conf, route, service)
if err != nil {
  panic(err)
}

Di sini kami menggunakan nama Plugin sebagai jwt, jadi kami boleh menambah pengesahan JWT. Di sini kami menggunakan pengesahan tanpa nama.

Ringkasan

Artikel ini memperkenalkan proses membina get laluan API menggunakan bahasa Go dan SDK Pelanggan Kong. Dengan menggunakan Kong, anda boleh membina get laluan API dengan cepat, mengurus API dan pemalam serta melaksanakan fungsi seperti pengesahan dan pengehadan semasa. Kong boleh dikawal dan diuruskan lagi menggunakan bahasa Go dan SDK Pelanggan Kong. Alat ini boleh meningkatkan kebolehskalaan dan pengurusan get laluan API, yang membolehkan perkhidmatan mikro memberi perkhidmatan yang lebih baik kepada perniagaan.

Atas ialah kandungan terperinci Bina get laluan API menggunakan bahasa Go. 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