У меня есть «api rest», который я создал в PHP, служба возвращает JSON с параметрами «header», «body», «get», «pos», который приходит для получения без какой-либо проверки.
Теперь я создал службу в angular для подключения к «api rest», все в порядке, у меня проблема в том, что я хочу отправить параметр как «ТЕЛО», но я не знаю, как это сделать, я исследуя, но я не нашел форму.
Можно ли отправить "тело" через HttpClient.get()
?
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { map } from 'rxjs/operators';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class ServicioService {
constructor(private http: HttpClient) { }
getQuery(query: string){
const url = `http://localhost:8080/servicio/`;
const headers = new HttpHeaders({
'Authorization': 'Bearer BQAiaibx-we0RSlZFN29B5TPF4t6egxbuuEsc5ZYZhpamHUhImd5'
});
const params = new HttpParams()
.set('page', '2')
.append('page', '3')
.set('sort', 'abc');
return this.http.get (url, { params, headers});
}
getNewReleases(){
return this.getQuery("")
.pipe( map((data: any) => {
return data;
}));
}
}
Запрос GET не имеет тело. Вы должны использовать POST или PUT.
Вы можете немного прочитать здесь о методах http. О GET: Метод GET запрашивает представление указанного ресурса. Запросы с использованием GET должны только извлекать данные и не должны иметь никакого другого эффекта.
Таким образом, было бы неправильно отправлять тело, потому что метод GET не должен ничего менять.
наличие тела не подразумевает изменения в бэкенде
как вы можете использовать это тогда? elastic.co/guide/en/elasticsearch/reference/current/…
So, it would be wrong to send a body because a GET method should not change anything.
Вы имеете в виду, какую страницу результатов вы хотите? Или фильтр?
Вам следует использовать запрос POST, а не запрос GET, если вы планируете отправлять данные в REST API.