บทความนี้จะพาคุณมาทำความเข้าใจกับโมดูล HttpClientModule ในรูปแบบเชิงมุม และแนะนำวิธีการร้องขอ พารามิเตอร์คำขอ เนื้อหาการตอบสนอง ตัวดักจับ Angular Proxy และความรู้อื่นๆ ที่เกี่ยวข้อง ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ
โมดูลนี้ใช้เพื่อส่งคำขอ Http
และวิธีการที่ใช้ในการส่งคำขอส่งคืนวัตถุ Observable
[บทช่วยสอนที่เกี่ยวข้องที่แนะนำ: "บทช่วยสอนเชิงมุม"]
1) แนะนำโมดูล HttpClientModule
// app.module.ts นำเข้า { httpClientModule } จาก '@ เชิงมุม/common/http'; นำเข้า: [ httpClientModule -
2) ฉีดวัตถุอินสแตนซ์บริการ HttpClient เพื่อส่งคำขอ
// app.component.ts นำเข้า { HttpClient } จาก '@ เชิงมุม/common/http'; ส่งออกคลาส AppComponent { ตัวสร้าง (http ส่วนตัว: HttpClient) {} -
3) ส่งคำขอ
นำเข้า { HttpClient } จาก "@เชิงมุม/common/http" คลาสส่งออก AppComponent ใช้ OnInit { ตัวสร้าง (http ส่วนตัว: HttpClient) {} ngOnInit() { this.getUsers().subscribe(console.log) - getUsers() { ส่งคืน this.http.get("https://jsonplaceholder.typicode.com/users") - -
this.http.get(url [, ตัวเลือก]); this.http.post(url, ข้อมูล [, ตัวเลือก]); this.http.delete(url [, ตัวเลือก]); this.http.put(url, ข้อมูล [, ตัวเลือก]);
this.http.get<โพสต์[]>('/getAllPosts') .subscribe(response => console.log(response))
1. คลาส HttpParams
ส่งออกประกาศคลาส HttpParams { ตัวสร้าง (ตัวเลือก?: HttpParamsOptions); มี (พารามิเตอร์: สตริง): บูลีน; รับ (พารามิเตอร์: สตริง): สตริง | .null; getAll (พารามิเตอร์: สตริง): สตริง [] | . คีย์(): สตริง[]; ผนวก (พารามิเตอร์: สตริง ค่า: สตริง): HttpParams; ชุด (พารามิเตอร์: สตริง ค่า: สตริง): HttpParams; ลบ (พารามิเตอร์: สตริง, ค่า?: สตริง): HttpParams; toString(): สตริง; -
2. อินเทอร์เฟซ HttpParamsOptions
ประกาศอินเทอร์เฟซ HttpParamsOptions { จากสตริง?: สตริง; จากวัตถุ?: { [พารามิเตอร์: สตริง]: สตริง | . ReadonlyArray<string>; - ตัวเข้ารหัส?: HttpParameterCodec; -
3. ตัวอย่างการใช้งาน
นำเข้า { HttpParams } จาก '@ เชิงมุม/common/http'; ให้ params = new HttpParams({ fromObject: {name: "zhangsan", age: "20"}}) params = params.append("เพศ", "ชาย") ให้ params = new HttpParams({ fromString: "name=zhangsan&age=20"})
การสร้างฟิลด์ส่วนหัวของคำขอจำเป็นต้องใช้คลาส HttpHeaders มีหลายวิธีในการดำเนินการส่วนหัวของคำขอภายใต้ออบเจ็กต์อินสแตนซ์ของคลาส
ส่งออกประกาศคลาส HttpHeaders { ตัวสร้าง (ส่วนหัว?: string | { [ชื่อ: สตริง]: สตริง | .สตริง[]; - มี (ชื่อ: สตริง): บูลีน; รับ (ชื่อ: สตริง): สตริง | .null; คีย์(): สตริง[]; getAll (ชื่อ: สตริง): สตริง [] | . ผนวก (ชื่อ: สตริง, ค่า: สตริง | สตริง []): HttpHeaders; ชุด (ชื่อ: สตริง ค่า: สตริง | สตริง []): HttpHeaders; ลบ (ชื่อ: สตริง, ค่า?: สตริง | สตริง []): HttpHeaders; -
ให้ headers = new HttpHeaders({ test: "Hello" })
ประกาศประเภท HttpObserve = 'body' | . // การตอบสนองอ่านเนื้อหาการตอบสนองที่สมบูรณ์ // เนื้อหาอ่านข้อมูลที่ส่งคืนโดยเซิร์ฟเวอร์
นี้.http.get( "https://jsonplaceholder.typicode.com/users", { สังเกต: "ร่างกาย" } ).สมัครสมาชิก(console.log)
Interceptors เป็นวิธีการจับภาพและแก้ไขคำขอ HTTP และการตอบกลับในแอปพลิเคชันเชิงมุมทั่วโลก (โทเค็น ข้อผิดพลาด)
Interceptor จะสกัดกั้นคำขอที่ทำโดยใช้โมดูล HttpClientModule เท่านั้น
ng g interceptor <name>
6.1 ขอสกัดกั้น
@ฉีด() ส่งออกคลาส AuthInterceptor ใช้ HttpInterceptor { ตัวสร้าง () {} //สกัดกั้นวิธีการสกัดกั้น( // ไม่ทราบระบุประเภทของคำขอเนื้อหา (เนื้อหา) คำขอ: HttpRequest<unknown>, ถัดไป: HttpHandler // ไม่ทราบ ระบุประเภทของเนื้อหาการตอบสนอง (เนื้อหา)): Observable<HttpEvent<unknown>> { // โคลนและแก้ไขส่วนหัวของคำขอ const req = request.clone({ ตั้งค่าส่วนหัว: { การอนุญาต: "ผู้ถือ xxxxxxx" - - // ส่งส่วนหัวคำขอที่แก้ไขกลับไปยังแอปพลิเคชันผ่านฟังก์ชันโทรกลับ return next.handle(req) - -
6.2 การสกัดกั้นการตอบสนอง
@ฉีด() ส่งออกคลาส AuthInterceptor ใช้ HttpInterceptor { ตัวสร้าง () {} //สกัดกั้นวิธีการสกัดกั้น( คำขอ: HttpRequest<ไม่ทราบ>, ถัดไป: HttpHandler ): สังเกตได้<ใด ๆ> { กลับ next.handle (คำขอ) .pipe ( ลองอีกครั้ง (2) catchError ((ข้อผิดพลาด: HttpErrorResponse) => ThrowError (ข้อผิดพลาด)) - - -
6.3 การฉีดสกัดกั้น
นำเข้า { AuthInterceptor } จาก "./auth.interceptor" นำเข้า { HTTP_INTERCEPTORS } จาก "@เชิงมุม/ทั่วไป/http" @NgModule({ ผู้ให้บริการ: [ - ให้: HTTP_INTERCEPTORS, useClass: AuthInterceptor, หลาย: จริง - - -
1. สร้างไฟล์ proxy.conf.json ในไดเร็กทอรีรากของโปรเจ็กต์และเพิ่มโค้ดต่อไปนี้
- "/api/*": { "เป้าหมาย": "http://localhost:3070", "ปลอดภัย": เท็จ "changeOrigin": จริง - -
/api/*: คำขอที่ขึ้นต้นด้วย /api ที่สร้างในแอปพลิเคชันต้องผ่านพรอกซีนี้
เป้าหมาย: URL ฝั่งเซิร์ฟเวอร์
ปลอดภัย: หากโปรโตคอลของ URL ฝั่งเซิร์ฟเวอร์คือ https รายการนี้จะต้องเป็นจริง
changeOrigin: หากเซิร์ฟเวอร์ไม่ใช่ localhost รายการนี้จะต้องเป็นจริง
2. ระบุไฟล์การกำหนดค่าพร็อกซี (วิธีที่ 1)
"สคริปต์": { "start": "ng ให้บริการ --proxy-config proxy.conf.json", -
3. ระบุไฟล์การกำหนดค่าพร็อกซี (วิธีที่ 2)
"ให้บริการ": { "ตัวเลือก": { "proxyConfig": "proxy.conf.json" -
โมดูลนี้ใช้เพื่อส่งคำขอ Http
และวิธีการที่ใช้ในการส่งคำขอส่งคืนวัตถุ Observable