이 기사에서는 각도의 HttpClientModule 모듈을 이해하고 요청 방법, 요청 매개변수, 응답 내용, 인터셉터, Angular 프록시 및 기타 관련 지식을 소개합니다.
이 모듈은 Http
요청을 보내는 데 사용되며 요청을 보내는 데 사용되는 메서드는 Observable
개체를 반환합니다. [관련 추천 튜토리얼: "Angular 튜토리얼"]
1) HttpClientModule 모듈을 소개합니다.
// app.module.ts import { httpClientModule } from '@angular/common/http'; 수입품: [ http클라이언트모듈 ]
2) 요청 전송을 위해 HttpClient 서비스 인스턴스 객체를 삽입합니다.
// app.comComponent.ts '@angular/common/http'에서 { HttpClient }를 가져옵니다. 내보내기 클래스 AppComponent { 생성자(비공개 http: HttpClient) {} }
3) 요청 보내기
"@angular/common/http"에서 { HttpClient } 가져오기 내보내기 클래스 AppComponent는 OnInit {를 구현합니다. 생성자(비공개 http: HttpClient) {} ngOnInit() { this.getUsers().subscribe(console.log) } getUsers() { return this.http.get("https://jsonplaceholder.typicode.com/users") } }
this.http.get(url [, 옵션]); this.http.post(url, data [, options]); this.http.delete(url [, 옵션]); this.http.put(url, data [, options]);
this.http.get<포스트[]>('/getAllPosts') .subscribe(응답 => console.log(응답))
1. HttpParams 클래스
내보내기 선언 클래스 HttpParams { 생성자(옵션?: HttpParamsOptions); has(param: string): 부울; get(param: 문자열): 문자열 | getAll(param: 문자열): 문자열[] | null; 키(): 문자열[]; 추가(매개변수: 문자열, 값: 문자열): HttpParams; set(param: 문자열, 값: 문자열): HttpParams; delete(param: 문자열, 값?: 문자열): HttpParams; toString(): 문자열; }
2. HttpParamsOptions 인터페이스
인터페이스 HttpParamsOptions {를 선언합니다. fromString?: 문자열; fromObject?: { [매개변수: 문자열]: 문자열 | ReadonlyArray<string>; }; 인코더?: HttpParameterCodec; }
3. 사용예
'@angular/common/http'에서 { HttpParams }를 가져옵니다. let params = new HttpParams({ fromObject: {name: "zhangsan", age: "20"}}) params = params.append("섹스", "남성") let params = new HttpParams({ fromString: "name=zhangsan&age=20"})
요청 헤더 필드를 생성하려면 HttpHeaders 클래스를 사용해야 합니다. 클래스 인스턴스 객체 아래에 요청 헤더를 작동하는 다양한 방법이 있습니다.
내보내기 선언 클래스 HttpHeaders { 생성자(헤더?: 문자열 | { [이름: 문자열]: 문자열 | 문자열[]; }); has(이름: 문자열): 부울; get(이름: 문자열): 문자열 | 키(): 문자열[]; getAll(이름: 문자열): 문자열[] | null; 추가(이름: 문자열, 값: 문자열 | 문자열[]): HttpHeaders; set(이름: 문자열, 값: 문자열 | 문자열[]): HttpHeaders; delete(이름: 문자열, 값?: 문자열 | 문자열[]): HttpHeaders; }
let headers = new HttpHeaders({ 테스트: "Hello" })
선언 유형 HttpObserve = 'body' | // 응답은 전체 응답 본문을 읽습니다. // 본문은 서버에서 반환한 데이터를 읽습니다.
this.http.get( "https://jsonplaceholder.typicode.com/users", { 관찰: "본체" } ).구독(console.log)
인터셉터는 Angular 애플리케이션에서 HTTP 요청 및 응답을 전역적으로 캡처하고 수정하는 방법입니다. (토큰, 오류)
인터셉터는 HttpClientModule 모듈을 사용하여 이루어진 요청만 가로챕니다.
ng g interceptor <name>
6.1 요청 차단
@주사 가능() 내보내기 클래스 AuthInterceptor는 HttpInterceptor를 구현합니다. 생성자() {} //차단 방법 Intercept( // 알 수 없음은 요청 본문(body)의 유형을 지정합니다. 요청: HttpRequest<unknown>, 다음: HttpHandler // 알 수 없음은 응답 콘텐츠(본문)의 유형을 지정합니다.): Observable<HttpEvent<unknown>> { // 요청 헤더를 복제하고 수정합니다. const req = request.clone({ setHeaders: { 승인: "전달자 xxxxxxx" } }) // 수정된 요청 헤더를 콜백 함수를 통해 애플리케이션에 다시 전달합니다. return next.handle(req) } }
6.2 응답 가로채기
@주사 가능() 내보내기 클래스 AuthInterceptor는 HttpInterceptor를 구현합니다. 생성자() {} //차단 방법 Intercept( 요청: HttpRequest<알 수 없음>, 다음: HttpHandler ): 관찰 가능<모든> { return next.handle(요청).pipe( 재시도(2), catchError((오류: HttpErrorResponse) => throwError(error)) ) } }
6.3 인터셉터 주입
"./auth.interceptor"에서 { AuthInterceptor } 가져오기 "@angular/common/http"에서 { HTTP_INTERCEPTORS } 가져오기 @NgModule({ 제공업체: [ { 제공: HTTP_INTERCEPTORS, useClass: 인증 인터셉터, 멀티: 사실 } ] })
1. 프로젝트의 루트 디렉터리에 Proxy.conf.json 파일을 생성하고 다음 코드를 추가합니다.
{ "/api/*": { "대상": "http://localhost:3070", "보안": 거짓, "changeOrigin": 참 } }
/api/*: 애플리케이션에서 /api로 시작하는 요청이 이 프록시를 통과합니다.
대상: 서버측 URL
secure: 서버 측 URL의 프로토콜이 https인 경우 이 항목은 true여야 합니다.
ChangeOrigin: 서버가 localhost가 아닌 경우 이 항목은 true여야 합니다.
2. 프록시 구성 파일 지정(방법 1)
"스크립트": { "start": "ng Serve --proxy-config Proxy.conf.json", }
3. 프록시 구성 파일 지정(방법 2)
"제공하다": { "옵션": { "proxyConfig": "proxy.conf.json" },
이 모듈은 Http
요청을 보내는 데 사용되며 요청을 보내는 데 사용되는 메서드는 Observable
개체를 반환합니다.