The example below will accomplish a target_url redirect based on header value, in a Go plugin.
func setUpstream(r *http.Request, upstream string) {
apiDef := ctx.GetDefinition(r)
apiDef.Proxy.EnableLoadBalancing = true
apiDef.Proxy.StructuredTargetList = apidef.NewHostListFromList([]string{upstream})
}
func ChangeUpstreamURL(rw http.ResponseWriter, r *http.Request) {
userHeader := r.Header.Get("UserID")
if userHeader == "1" {
setUpstream(r, "https://httpbingo.org")
} else if userHeader == "2" {
setUpstream(r, "https://httpbin.org")
} else {
setUpstream(r, "https://google.com")
}
}