Open-Source Plugins Quickstart
Last updated: 2 minutes read.
This quick start guide will explain how to run the getting started Go plugin using the Tyk OSS Gateway.
Estimated time: 10-15 minutes
In this tutorial you will learn how to:
- Bootstrap the getting started example.
- Test the plugin.
- View the analytics.
- Next steps.
1. Bootstrap the getting started example
Please run the following command from within your newly cloned directory to run the Tyk Stack and compile the sample plugin. This will take a few minutes as we have to download all the necessary dependencies and docker images.
make up-oss && make build
2. Test the plugin
Let’s test the plugin by sending an API request to the pre-configured API definition:
curl localhost:8080/httpbin/get
Response:
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip",
"Foo": "Bar",
"Host": "httpbin.org",
"User-Agent": "curl/7.79.1"
},
"origin": "172.28.0.1, 99.242.70.243",
"url": "http://httpbin.org/get"
}
We’ve sent an API request to the Gateway. We can see that the sample custom plugin has injected an HTTP header with a value of Foo:Bar. This header was echoed back in the Response Body via the mock Httpbin server.
The ./tyk/scripts/bootstrap-oss.sh
script creates an API definition that includes the custom plugin.
3. View the analytics
We can see that Tyk Pump is running in the background. Let’s check the logs after sending the API request:
docker logs custom-go-plugin_tyk-pump_1
Output:
time="Feb 23 16:29:27" level=info msg="Purged 1 records..." prefix=stdout-pump
{"level":"info","msg":"","time":"0001-01-01T00:00:00Z","tyk-analytics-record":{"method":"GET","host":"httpbin.org","path":"/get","raw_path":"/get","content_length":0,"user_agent":"curl/7.79.1","day":23,"month":2,"year":2023,"hour":16,"response_code":200,"api_key":"00000000","timestamp":"2023-02-23T16:29:27.53328605Z","api_version":"Non Versioned","api_name":"httpbin","api_id":"845b8ed1ae964ea5a6eccab6abf3f3de","org_id":"","oauth_id":"","request_time":1128,"raw_request":"...","raw_response":"...","ip_address":"192.168.0.1","geo":{"country":{"iso_code":""},"city":{"geoname_id":0,"names":null},"location":{"latitude":0,"longitude":0,"time_zone":""}},"network":{"open_connections":0,"closed_connections":0,"bytes_in":0,"bytes_out":0},"latency":{"total":1128,"upstream":1111},"tags":["key-00000000","api-845b8ed1ae964ea5a6eccab6abf3f3de"],"alias":"","track_path":false,"expireAt":"2023-03-02T16:29:27.54271855Z","api_schema":""}}
As we can see, when we send API requests, the Tyk Pump will scrape them from Redis and then send them to a persistent store as configured in the Tyk Pump env file.
In this example, we’ve configured a simple STDOUT
Pump where the records will be printed to the Standard OUT (docker logs!)
4. Next steps
Try updating the code of the plugin and experimenting. Once you’ve made changes to the example plugin, please run make build
to compile the plugin and reload the gateway with the changes.
When finished, please run make down
to bring down the stack.
Summary
This tutorial has explained how to:
- Bootstrap the getting started example plugin in Tyk Gateway environment.
- Test the example plugin.
- View the analytics.
- Next steps.