Tôi đã kết thúc việc tìm kiếm nó thông qua IntelliSense trên get()
chức năng. Vì vậy, tôi sẽ đăng nó ở đây cho bất cứ ai đang tìm kiếm thông tin tương tự.
Dù sao, cú pháp gần giống nhau, nhưng hơi khác nhau. Thay vì sử dụng URLSearchParams()
các tham số cần phải được khởi tạo HttpParams()
và thuộc tính trong get()
hàm bây giờ được gọi params
thay vì 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 })
}
Tôi thực sự thích cú pháp này vì nó là một thông số bất khả tri hơn một chút. Tôi cũng đã cấu trúc lại mã để viết tắt hơn một chút.
getLogs(logNamespace): Observable<any> {
return this._HttpClient.get(`${API_URL}/api/v1/data/logs`, {
params: new HttpParams().set('logNamespace', logNamespace)
})
}
Nhiều tham số
Cách tốt nhất mà tôi đã tìm thấy cho đến nay là xác định một Params
đối tượng với tất cả các tham số tôi muốn xác định được xác định bên trong. Như @estus đã chỉ ra trong bình luận dưới đây, có rất nhiều câu trả lời tuyệt vời trong Câu hỏi này về cách gán nhiều tham số.
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 })
Nhiều tham số với logic có điều kiện
Một điều khác tôi thường làm với nhiều tham số là cho phép sử dụng nhiều tham số mà không yêu cầu sự hiện diện của chúng trong mỗi cuộc gọi. Sử dụng Lodash, thật đơn giản để thêm / xóa các tham số khỏi các cuộc gọi đến API một cách có điều kiện. Các hàm chính xác được sử dụng trong Lodash hoặc Underscores hoặc vanilla JS có thể khác nhau tùy thuộc vào ứng dụng của bạn, nhưng tôi đã thấy rằng việc kiểm tra định nghĩa thuộc tính hoạt động khá tốt. Hàm bên dưới sẽ chỉ truyền các tham số có thuộc tính tương ứng trong biến tham số được truyền vào hàm.
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 }
Kiểm tra stackoverflow.com/a/54211610/5042169