ฉันพบการค้นหาผ่าน IntelliSense ในget()
ฟังก์ชั่น ดังนั้นฉันจะโพสต์ไว้ที่นี่สำหรับใครก็ตามที่กำลังมองหาข้อมูลที่คล้ายกัน
อย่างไรก็ตามไวยากรณ์เกือบจะเหมือนกัน แต่แตกต่างกันเล็กน้อย แทนการใช้URLSearchParams()
พารามิเตอร์ที่จะต้องมีการเริ่มต้นเป็นHttpParams()
และทรัพย์สินภายในที่get()
ฟังก์ชั่นเรียกว่าตอนนี้แทนparams
search
import { HttpClient, HttpParams } from '@angular/common/http';
getLogs(logNamespace): Observable<any> {
// Setup log namespace query parameter
let params = new HttpParams().set('logNamespace', logNamespace);
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
}
ฉันชอบไวยากรณ์นี้มากกว่าพารามิเตอร์ที่ไม่เชื่อเรื่องพระเจ้า ฉันยัง refactored รหัสเพื่อให้ตัวย่อเล็กน้อย
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
หลายพารามิเตอร์
วิธีที่ดีที่สุดที่ฉันได้พบคือการกำหนดParams
วัตถุที่มีพารามิเตอร์ทั้งหมดที่ฉันต้องการกำหนดภายใน @estus ชี้ให้เห็นในความคิดเห็นด้านล่างมีคำตอบที่ดีมากมายในคำถามนี้เกี่ยวกับวิธีกำหนดพารามิเตอร์หลายตัว
getLogs(parameters) {
// Initialize Params Object
let params = new HttpParams();
// Begin assigning parameters
params = params.append('firstParameter', parameters.valueOne);
params = params.append('secondParameter', parameters.valueTwo);
// Make the API call using the new parameters.
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
หลายพารามิเตอร์พร้อมเงื่อนไขแบบลอจิก
สิ่งที่ฉันมักทำกับพารามิเตอร์หลายตัวคืออนุญาตให้ใช้หลายพารามิเตอร์โดยไม่ต้องมีการแสดงตนในทุกการโทร การใช้ Lodash นั้นง่ายมากที่จะเพิ่ม / ลบพารามิเตอร์จากการเรียกไปยัง API ฟังก์ชั่นที่แน่นอนที่ใช้ใน Lodash หรือ Underscores หรือวานิลลา JS อาจแตกต่างกันไปขึ้นอยู่กับแอปพลิเคชันของคุณ แต่ฉันได้พบว่าการตรวจสอบข้อกำหนดคุณสมบัติทำงานได้ค่อนข้างดี ฟังก์ชั่นด้านล่างจะส่งพารามิเตอร์ที่มีคุณสมบัติที่สอดคล้องกันภายในตัวแปรพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชั่น
getLogs(parameters) {
// Initialize Params Object
let params = new HttpParams();
// Begin assigning parameters
if (!_.isUndefined(parameters)) {
params = _.isUndefined(parameters.valueOne) ? params : params.append('firstParameter', parameters.valueOne);
params = _.isUndefined(parameters.valueTwo) ? params : params.append('secondParameter', parameters.valueTwo);
}
// Make the API call using the new parameters.
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, { params: params })
this.httpClient.get(url, { params }
ตรวจสอบstackoverflow.com/a/54211610/5042169