$http.get() with JSON data

angularjs, http

Solution

I would take this as the answer:

For HTTP, it's not prohibited, but you shouldn't use it as the server may (and SHOULD) ignore the body of `GET` request.

Reference: HTTP GET with request body

For XHR, body of `GET` and `HEAD` will be ignored (hinted by @jacob-koshy).

Reference: https://xhr.spec.whatwg.org/#the-send()-method

Problem

I'm writing a server app and wanted the client to use data in body to pararmeterize my GET method, like this: ``` # http -v GET http://localhost:3000/url text=123 foo=bar GET /url HTTP/1.1 Accept: application/json Accept-Encoding: gzip, deflate, compress Content-Length: 29 Content-Type: application/json; charset=utf-8 Host: localhost:3000 User-Agent: HTTPie/0.4.0 { "foo": "bar", "text": "123" } ``` In AngularJS I tried: ``` var params = { "foo": "bar", "text": "123" } // no body $http({ method: 'GET', url: '/url', data: params }) // ugly url // also has its limitation: http://stackoverflow.com/questions/978061/http-get-with-request-body $http({ method: 'GET', url: '/url', params: params }) // params in body, but I wanted GET $http({ method: 'POST', url: '/url', data: params }) ``` Is this by design or a bug? I cannot see why from the documentation.

Original source

Related problems