각진, 매개 변수가 있는 Http GET?
나는 그런 방법으로 API 호출을 하는 방법을 모릅니다.
[HttpGet]
[ActionName("GetSupport")]
public HttpResponseMessage GetSupport(int projectid)
GET이지만 통과해야 할 매개 변수가 있기 때문에 어떻게 해야 합니까?이런 건가요?
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('projectid', this.id);
this.http.get('http://localhost:63203/api/CallCenter/GetSupport', { headers: headers })
다음과 같은 것을 갖는 것:
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('projectid', this.id);
let params = new URLSearchParams();
params.append("someParamKey", this.someParamValue)
this.http.get('http://localhost:63203/api/CallCenter/GetSupport', { headers: headers, search: params })
물론 필요한 모든 매개 변수를 추가하여params
URL 문자열을 사용하여 요청에 매개 변수를 전달하는 것보다 훨씬 유연합니다.
편집(28.09.2017):알 모타파르가 논평에서 말했듯이,search
Angular 4에서는 더 이상 사용되지 않으므로 를 사용해야 합니다.params
편집(02.11.2017):새 기능을 사용하는 경우HttpClient
지금은 있습니다HttpParams
모양과 용도는 다음과 같습니다.
let params = new HttpParams().set("paramName",paramValue).set("paramName2", paramValue2); //Create new HttpParams
그런 다음 기본적으로 동일한 방법으로 요청에 매개 변수를 추가합니다.
this.http.get(url, {headers: headers, params: params});
//No need to use .map(res => res.json()) anymore
및 의 문서에 더 많은 정보
Angular 9+의 경우 키 값 개념 없이 머리글과 매개 변수를 직접 추가할 수 있습니다.
const headers = new HttpHeaders().append('header', 'value');
const params = new HttpParams().append('param', 'value');
this.http.get('url', {headers, params});
위의 솔루션은 도움이 되지 않았지만 다음 방법으로 동일한 문제를 해결합니다.
private setHeaders(params) {
const accessToken = this.localStorageService.get('token');
const reqData = {
headers: {
Authorization: `Bearer ${accessToken}`
},
};
if(params) {
let reqParams = {};
Object.keys(params).map(k =>{
reqParams[k] = params[k];
});
reqData['params'] = reqParams;
}
return reqData;
}
요청을 보냅니다.
this.http.get(this.getUrl(url), this.setHeaders(params))
NestJS 백엔드와 내가 모르는 다른 백엔드에서 작동합니다.
관심 있는 사람들을 위해 도움이 되는 코드 조각을 제공하는 것입니다.HttpParams
2017년 답변에서 언급된 방향.
여기 제가 할 일이 있습니다.api.service
요청에 대한 해당 HttpParams에 대한 매개 변수를 "자동화"합니다.
import { HttpClient, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Params } from '@angular/router';
import { Observable } from 'rxjs';
import { environment } from '@env';
@Injectable({
providedIn: 'root'
})
export class ApiService {
constructor(private http: HttpClient) { }
public get<T>(path: string, routerParams?: Params): Observable<T> {
let queryParams: Params = {};
if (routerParams) {
queryParams = this.setParameter(routerParams);
}
console.log(queryParams);
return this.http.get<T>(this.path(path), { params: queryParams });
}
public put<T>(path: string, body: Record<string, any> = {}): Observable<any> {
return this.http.put(this.path(path), body);
}
public post<T>(path: string, body: Record<string, any> = {}): Observable<any> {
return this.http.post(this.path(path), body);
}
public delete<T>(path: string): Observable<any> {
return this.http.delete(this.path(path));
}
private setParameter(routerParams: Params): HttpParams {
let queryParams = new HttpParams();
for (const key in routerParams) {
if (routerParams.hasOwnProperty(key)) {
queryParams = queryParams.set(key, routerParams[key]);
}
}
return queryParams;
}
private path(path: string): string {
return `${environment.api_url}${path}`;
}
}
이 문제를 해결하기 위한 쉽고 유용한 방법
getGetSuppor(filter): Observale<any[]> {
return this.https.get<any[]>('/api/callCenter/getSupport' + '?' + this.toQueryString(filter));
}
private toQueryString(query): string {
var parts = [];
for (var property in query) {
var value = query[propery];
if (value != null && value != undefined)
parts.push(encodeURIComponent(propery) + '=' + encodeURIComponent(value))
}
return parts.join('&');
}
언급URL : https://stackoverflow.com/questions/44280303/angular-http-get-with-parameter
'programing' 카테고리의 다른 글
Android 앱을 시장에 게시하기 전에 "해야 할 작업" 목록 (0) | 2023.07.26 |
---|---|
Android 스튜디오 찾기 및 교체 (0) | 2023.07.26 |
Oracle 10g 데이터베이스에서 Oracle JDBC 12.1.0.1(12c 데이터베이스용)을 사용할 수 있습니까? (0) | 2023.07.26 |
Spring Boot Test 1.5에서 런타임 로컬 서버 포트를 설정할 수 없음 (0) | 2023.07.26 |
오라클의 기존 테이블에서 addl 스크립트를 생성하거나 가져올 수 있는 방법은 무엇입니까?하이브에서 다시 만들어야 합니다. (0) | 2023.07.26 |