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

Bina get laluan API menggunakan bahasa Go

Jun 18, 2023 am 09:07 AM
pergi bahasa membina pintu masuk api

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!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang May 03, 2024 pm 12:15 PM

Cara menggunakan refleksi untuk mengakses medan dan kaedah persendirian dalam golang

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang Apr 25, 2024 pm 02:39 PM

Petua untuk mencipta fungsi baharu secara dinamik dalam fungsi golang

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go May 08, 2024 pm 03:09 PM

Perbezaan antara ujian prestasi dan ujian unit dalam bahasa Go

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang? May 07, 2024 pm 12:39 PM

Apakah perangkap yang perlu kita perhatikan semasa mereka bentuk sistem teragih dengan teknologi Golang?

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin May 08, 2024 pm 09:42 PM

Perpustakaan dan alatan teknologi Golang yang digunakan dalam pembelajaran mesin

Evolusi konvensyen penamaan fungsi golang Evolusi konvensyen penamaan fungsi golang May 01, 2024 pm 03:24 PM

Evolusi konvensyen penamaan fungsi golang

Peranan teknologi Golang dalam pembangunan IoT mudah alih Peranan teknologi Golang dalam pembangunan IoT mudah alih May 09, 2024 pm 03:51 PM

Peranan teknologi Golang dalam pembangunan IoT mudah alih

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi? Apr 29, 2024 am 11:33 AM

Bolehkah parameter pembolehubah golang digunakan untuk mengembalikan nilai fungsi?

See all articles