$ http.get() с данными JSON
Я пишу серверное приложение и хотел, чтобы клиент использовал данные в теле, чтобы pararmeterize мой метод GET, например:
# 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"
}
В AngularJS я пробовал:
var params = {
"foo": "bar",
"text": "123"
}
// no body
$http({
method: 'GET',
url: '/url',
data: params })
// ugly url
// also has its limitation: http://stackoverflow.com/info/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 })
Это по дизайну или ошибке?
Я не понимаю, почему из документации.
Ответы
Ответ 1
Я бы принял это как ответ:
Для HTTP это не запрещено, но вы не должны использовать его, поскольку сервер может (и СЛЕДУЕТ) игнорировать тело запроса GET
.
Ссылка: HTTP GET с телом запроса
Для XHR тело GET
и HEAD
будет проигнорировано (намечено @jacob-koshy).
Ссылка: https://xhr.spec.whatwg.org/#the-send()-method