Kumaran
Kumaran

Reputation: 3650

How to send post data value in go-wrk command?

In curl, I can send post data by -d flag like below example

curl -X POST -d'{"accountID":"1"}' localhost:1234/geInfo

How am I supposed to send accountID value in go-wrk command for a post request?

Upvotes: 0

Views: 651

Answers (1)

TehSphinX
TehSphinX

Reputation: 7440

Unless I am mistaken, it is (currently) not supported to pass post parameters.

I figured that from the code of go-wrk by following the -m="POST" parameter which suggests otherwise. (Offering the method "POST" of course does not imply you can also pass parameters)

The parameter is parsed in main.go:19:

method            = flag.String("m", "GET", "the http request method")

then passed on to client in single_node.go:16:

go StartClient(
    toCall,
    *headers,
    *method,
    *disableKeepAlives,
    responseChannel,
    wg,
    *totalCalls,
)

where it is received in third place in "meth" variable (client.go:14):

func StartClient(url_, heads, meth string, dka bool, responseChan chan *Response, waitGroup *sync.WaitGroup, tc int) {

and then used here (client.go:55):

req, _ := http.NewRequest(meth, url_, nil)
sets := strings.Split(heads, "\n")

//Split incoming header string by \n and build header pairs
for i := range sets {
    split := strings.SplitN(sets[i], ":", 2)
    if len(split) == 2 {
        req.Header.Set(split[0], split[1])
    }
}

timer := NewTimer()
for {
    timer.Reset()

    resp, err := tr.RoundTrip(req)

    respObj := &Response{}

    (...)

    responseChan <- respObj
}

If post parameters would be passable, they would have to be put somewhere into the Request as you can lookup on the golang http package website:

func NewRequest(method, urlStr string, body io.Reader) (*Request, error)

NewRequest returns a new Request given a method, URL, and optional body.

Upvotes: 1

Related Questions