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

Bina get laluan API menggunakan bahasa Go

PHPz
Lepaskan: 2023-06-18 09:07:43
asal
1336 orang telah melayarinya

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
Salin selepas log masuk

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

  1. Lancarkan Kong
$ kong start
Salin selepas log masuk
  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'
Salin selepas log masuk

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'
Salin selepas log masuk

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
Salin selepas log masuk
  1. Buat konfigurasi Kong
conf := kong.Configuration{
  KongAdminURL: "http://localhost:8001", // Kong Admin接口地址
  KongURL: "http://localhost:8000", // Kong代理服务地址
}
Salin selepas log masuk
  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"}),
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan