func (p Proxy) Apply(ctx *context.Context) {
	transport, ok := ctx.Client.Transport.(*http.Transport)
	if !ok {
		return
	}
	if p.URL != "" {
		proxy, _ := url.Parse(p.URL)
		transport.Proxy = http.ProxyURL(proxy)
	}
	if p.Servers != nil {
		transport.Proxy = func(req *http.Request) (*url.URL, error) {
			if value, ok := p.Servers[req.URL.Scheme]; ok {
				return url.Parse(value)
			}
			return http.ProxyFromEnvironment(req)
		}
	}
	ctx.Client.Transport = transport
}
Apply http proxy url or multi services
package request
import (
	"net/http"
	"net/url"
	"github.com/monaco-io/request/context"
)
type Proxy struct {
	Servers map[string]string
	URL     string
}