मैंने इसे get()
फंक्शन पर IntelliSense के माध्यम से ढूंढना समाप्त किया । तो, मैं इसे यहाँ पोस्ट करूँगा जो भी इसी तरह की जानकारी की तलाश में है।
वैसे भी, वाक्यविन्यास लगभग समान है, लेकिन थोड़ा अलग है। के बजाय 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 })
}
मैं वास्तव में इस वाक्यविन्यास को इसके थोड़ा अधिक पैरामीटर अज्ञेय के रूप में पसंद करता हूं। मैंने इसे थोड़ा और संक्षिप्त बनाने के लिए भी कोड को रीलेक्ट किया।
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 में कॉल से सशर्त रूप से पैरामीटर जोड़ना / निकालना बहुत सरल है। लोदश या अंडरस्कोर, या वेनिला जेएस में उपयोग किए जाने वाले सटीक कार्य आपके आवेदन के आधार पर भिन्न हो सकते हैं, लेकिन मैंने पाया है कि संपत्ति की परिभाषा के लिए जाँच बहुत अच्छी तरह से काम करती है। नीचे दिया गया फ़ंक्शन केवल उन मापदंडों को पारित करेगा जिनके पास फ़ंक्शन में पारित पैरामीटर चर के भीतर समान गुण हैं।
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