Estoy creando una solicitud HTTP en Angular, pero no sé cómo agregarle argumentos de URL (cadena de consulta).
this.http.get(StaticSettings.BASE_URL).subscribe(
(response) => this.onGetForecastResult(response.json()),
(error) => this.onGetForecastError(error.json()),
() => this.onGetForecastComplete()
);
Ahora mi StaticSettings.BASE_URL es algo así como una url sin cadena de consulta como: http://atsomeplace.com/ pero quiero que sea http://atsomeplace.com/?var1=val1&var2=val2
¿Dónde caben var1 y var2 en mi objeto de solicitud Http? Quiero agregarlos como un objeto.
{
query: {
var1: val1,
var2: val2
}
}
y luego solo el módulo Http hace el trabajo de analizarlo en una cadena de consulta de URL.
http
angular
typescript
Miguel Lattuada
fuente
fuente
Respuestas:
Los métodos HttpClient le permiten configurar los parámetros en sus opciones.
Puede configurarlo importando el HttpClientModule desde el paquete @ angular / common / http.
Después de eso, puede inyectar el HttpClient y usarlo para hacer la solicitud.
Para las versiones angulares anteriores a la versión 4, puede hacer lo mismo con Http servicio .
El método Http.get toma un objeto que implementa RequestOptionsArgs como segundo parámetro.
El campo de búsqueda de ese objeto se puede usar para establecer una cadena o un objeto URLSearchParams .
Un ejemplo:
La documentación para la clase Http tiene más detalles. Se puede encontrar aquí y un ejemplo de trabajo aquí .
fuente
http.get(url, {params: {var1: val1, var2: val2}})
search
propiedad ha sido depricada desde 4.0.0 -> useparams
en su lugarEditar angular> = 4.3.x
HttpClient se ha introducido junto con HttpParams . Debajo de un ejemplo de uso:
(Viejas respuestas)
Editar angular> = 4.x
requestOptions.search
ha quedado en desuso Use en surequestOptions.params
lugar:Respuesta original (angular 2)
Necesitas importar de la
URLSearchParams
siguiente maneraY luego construya sus parámetros y haga la solicitud http de la siguiente manera:
fuente
RequestOptions
. Actualicé mi respuesta.search
. Arreglado mi problemasearch
propiedad.Version 5+
Con Angular 5 en adelante, NO tiene que usar HttpParams . Puede enviar directamente su objeto json como se muestra a continuación.
Tenga en cuenta que los valores de datos deben ser cadenas, es decir;
{ params: {limit: "2"}}
Versión 4.3.x +
Utilice HttpParams, HttpClient de @ angular / common / http
Podría ayudar un poco!
fuente
JSON.stringify()
Angular 6
Puede pasar los parámetros necesarios para recibir llamadas utilizando params:
donde x = {propiedad: "123"}.
En cuanto a la función api que registra "123":
fuente
Mi ejemplo
Mi metodo
en mi componente
Por cartero
fuente
En Angular 7/8 más reciente, puede usar el enfoque más simple: -
fuente
searchParams
'propiedades no sonstring
valores.Si planea enviar más de un parámetro.
Componente
Servicio
Y continúe con su solicitud http como lo hizo @ethemsulan.
Ruta del lado del servidor
fuente
Puede usar HttpParams desde @ angular / common / http y pasar una cadena con la consulta. Por ejemplo:
Ahora en tu código
Y esto funciona para ti :)
Espero ayudarte
fuente
siempre que haya instalado jQuery , lo hago
npm i jquery --save
e incluyoapps.scripts
enangular-cli.json
fuente
fuente
Puede usar los parámetros de URL de la documentación oficial.
Ejemplo:
this.httpClient.get(this.API, { params: new HttpParams().set('noCover', noCover) })
fuente