From 5ce55817039488a4445287191025212a14e50de8 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Fri, 29 Nov 2019 02:42:09 -0500 Subject: [PATCH] 15864: Use POST/X-Http-Method-Override instead of long request URLs. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- sdk/go/arvados/client.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sdk/go/arvados/client.go b/sdk/go/arvados/client.go index 8545cb969d..58c0de8255 100644 --- a/sdk/go/arvados/client.go +++ b/sdk/go/arvados/client.go @@ -281,9 +281,8 @@ func (c *Client) RequestAndDecodeContext(ctx context.Context, dst interface{}, m } if urlValues == nil { // Nothing to send - } else if method == "GET" || method == "HEAD" || body != nil { - // Must send params in query part of URL (FIXME: what - // if resulting URL is too long?) + } else if body != nil || ((method == "GET" || method == "HEAD") && len(urlValues.Encode()) < 1000) { + // Send params in query part of URL u, err := url.Parse(urlString) if err != nil { return err @@ -297,6 +296,10 @@ func (c *Client) RequestAndDecodeContext(ctx context.Context, dst interface{}, m if err != nil { return err } + if (method == "GET" || method == "HEAD") && body != nil { + req.Header.Set("X-Http-Method-Override", method) + req.Method = "POST" + } req = req.WithContext(ctx) req.Header.Set("Content-type", "application/x-www-form-urlencoded") for k, v := range c.SendHeader { -- 2.39.5