<aside> 💡 Dari Tyk sendiri support tidak hanya bahasa Go untuk membuat plugin. Tetapi yang paling direkomendasikan adalah bahasa pemrograman Go. Kenapa? Karena plugin kita dapat di-load secara langsung oleh Tyk gateway yang juga dibuat dengan menggunakan bahasa pemgograman Go, alih-alih melakukan koneksi via gRPC dengan plugin.
</aside>
Di dalam contoh ini, akan dibuat plugin untuk menambahkan custom header di HTTP response.
Program yang akan dibuat ini akan menambahkan header dengan key custom-response-header dan value yyyyy ke HTTP Response header API yang menggunakan plugin ini. Berikut ini file main.go .
// main.go
package main
import (
"fmt"
"net/http"
)
func main() {
fmt.Println("running")
}
func AddHeader(wr http.ResponseWriter, response *http.Response, request *http.Request) {
response.Header.Add("custom-response-header", "yyyyy")
}
Berikut ini file go.mod .
// go.mod
module plugin-tyk
go 1.19
Pull image tyk-plugin-compiler terlebih dahulu sesuai versi Tyk API Gateway yang dipakai (dalam hal ini versi v5.2.2).
docker pull tykio/tyk-plugin-compiler:v5.2.2
compile dengan menjalankan container tyk-plugin-compiler. Di sini platform (OS dan arsitektur CPU) disamakan dengan platform di mana Tyk API gateway dipasang.
docker run --rm -v `pwd`:/plugin-source --platform=linux/amd64 tykio/tyk-plugin-compiler:v5.2.2 tyk-plugin.so
Bisa menggunakan software seperti WinSCP atau MobaXterm.
"custom_middleware": {
"pre": [],
"post": [],
"post_key_auth": [],
"auth_check": {
"disabled": false,
"name": "",
"path": "",
"require_session": false,
"raw_body_only": false
},
"response": [
{
"disabled": false,
"name": "AddHeader",
"path": "/opt/tyk-hybrid/middleware/tyk-plugin.so", // letak plugin di server
"require_session": false,
"raw_body_only": false
}
],
"driver": "goplugin",
"id_extractor": {
"disabled": false,
"extract_from": "",
"extract_with": "",
"extractor_config": {}
}
},
<aside>
💡 walaupun nama file hasil build langkah kedua seperti ini tyk-plugin_v5.2.2_linux_amd64.so, di Tyk Gateway cukup diberi tyk-plugin.so saja tanpa perlu versi gateway (v5.22), OS (Linux) dan arsitektur CPU (amd64). Terkait mekanisme bagaimana Tyk mencari berkas plugin dapat dibaca sendiri di repository Tyk (dikarenakan Tyk API Gateway open source) di sini https://github.com/TykTechnologies/tyk/.
</aside>