एंगुलर इंटरसेप्टर्स में निर्बाध जेडब्ल्यूटी रिफ्रेश सुनिश्चित करना
सुरक्षित उपयोगकर्ता सत्र वाले वेब ऐप में, निर्बाध उपयोगकर्ता अनुभव के लिए अल्पकालिक JWT टोकन को प्रभावी ढंग से प्रबंधित करना महत्वपूर्ण है। जब टोकन समाप्त हो जाते हैं, तो उपयोगकर्ताओं को अक्सर पुन: लॉगिन करने के लिए मजबूर होने जैसी समस्याओं का सामना करना पड़ता है, जो निराशाजनक हो सकता है और उपयोगकर्ता सहभागिता को बाधित कर सकता है। इससे निपटने के लिए, डेवलपर्स आमतौर पर समाप्त सत्रों को संभालने के लिए एंगुलर इंटरसेप्टर का उपयोग करके स्वचालित टोकन रिफ्रेश लागू करते हैं। 🕰️
इस दृष्टिकोण में HTTP अनुरोधों को रोकना, 401 त्रुटियों (अनधिकृत अनुरोधों) को पकड़ना और फिर एक नया टोकन प्राप्त करने के लिए ताज़ा प्रक्रिया को लागू करना शामिल है। हालाँकि, यह सुनिश्चित करने में समस्याएँ उत्पन्न हो सकती हैं कि अद्यतन टोकन या कुकी पुनः प्रयास किए गए अनुरोधों पर लागू हो। यदि नया टोकन सही ढंग से प्रचारित नहीं होता है, तो पुनः प्रयास विफल हो सकता है, जिससे उपयोगकर्ताओं को समान प्राधिकरण त्रुटि मिलेगी और संभावित रूप से ऐप वर्कफ़्लो बाधित हो सकता है।
इस गाइड में, हम इस इंटरसेप्टर पैटर्न के व्यावहारिक कार्यान्वयन के बारे में जानेंगे। हम देखेंगे कि त्रुटियों को कैसे पकड़ा जाए, टोकन को ताज़ा किया जाए और पुष्टि की जाए कि अनुरोध वैध प्राधिकरण के साथ पुनः प्रयास करें। यह दृष्टिकोण आपको सत्र नवीनीकरण प्रक्रिया पर नियंत्रण प्रदान करते हुए रुकावटों को कम करता है।
अंत तक, आपको सामान्य कमियों को दूर करने के बारे में जानकारी प्राप्त होगी, जैसे HttpOnly कुकीज़ को संभालना और उच्च अनुरोध मात्रा के दौरान ताज़ा अनुक्रमों को प्रबंधित करना। यह विधि सुनिश्चित करती है कि आपका एप्लिकेशन निरंतर लॉगिन के बिना एक सुरक्षित, सुचारू उपयोगकर्ता सत्र बनाए रख सकता है। 🔒
आज्ञा | उपयोग का उदाहरण |
---|---|
catchError | HTTP अनुरोधों के दौरान होने वाली त्रुटियों को पकड़ने और संभालने के लिए एक ऑब्जर्वेबल पाइपलाइन के भीतर उपयोग किया जाता है, जिससे इंटरसेप्टर को विशेष रूप से टोकन को ताज़ा करने या अनधिकृत अनुरोधों को संभालने के लिए 401 त्रुटियों को रोकने की अनुमति मिलती है। |
switchMap | एक नए अवलोकन योग्य पर स्विच करता है, आमतौर पर टोकन ताज़ा होने के बाद HTTP पुनः प्रयास को संभालने के लिए यहां उपयोग किया जाता है। धाराओं को स्विच करके, यह पूर्व अवलोकन योग्य को प्रतिस्थापित करता है, यह सुनिश्चित करता है कि केवल नए टोकन के साथ पुनः प्रयास किए गए अनुरोध पर कार्रवाई की जाती है। |
BehaviorSubject | एक विशेष RxJS विषय जिसका उपयोग HTTP अनुरोधों में टोकन ताज़ा स्थिति को बनाए रखने के लिए किया जाता है। नियमित विषय के विपरीत, व्यवहार विषय अंतिम उत्सर्जित मूल्य को बरकरार रखता है, जो समवर्ती 401 त्रुटियों से निपटने में सहायक होता है। |
clone | HttpRequest ऑब्जेक्ट को withCredentials: true जैसे अद्यतन गुणों के साथ क्लोन करता है। यह मूल अनुरोध कॉन्फ़िगरेशन को संरक्षित करते हुए कुकीज़ को अनुरोध के साथ भेजने की अनुमति देता है। |
pipe | एक ऑब्जर्वेबल में एकाधिक RxJS ऑपरेटरों को एक साथ जोड़ता है। इस इंटरसेप्टर में, टोकन रिफ्रेश के बाद त्रुटि प्रबंधन और पुनः प्रयास तर्क लिखने के लिए पाइप आवश्यक है। |
of | एक RxJS उपयोगिता जो किसी मान से अवलोकन योग्य वस्तु बनाती है। परीक्षण में, इंटरसेप्टर के यूनिट परीक्षणों में सहायता करते हुए, रिफ्रेशटोकन से एक सफल प्रतिक्रिया का अनुकरण करने के लिए (सत्य) का उपयोग किया जाता है। |
HttpTestingController | एंगुलर के परीक्षण मॉड्यूल की एक उपयोगिता जो परीक्षण वातावरण में HTTP अनुरोधों को रोकने और नियंत्रित करने की अनुमति देती है। यह प्रतिक्रियाओं का अनुकरण करने और यह दावा करने में मदद करता है कि इंटरसेप्टर द्वारा अनुरोधों को सही ढंग से संभाला गया था। |
flush | परीक्षण के भीतर HTTP अनुरोध को मैन्युअल रूप से पूरा करने के लिए HttpTestingController के साथ उपयोग किया जाता है, जिससे 401 अनधिकृत जैसी प्रतिक्रियाओं के अनुकरण की अनुमति मिलती है। यह सुनिश्चित करता है कि इंटरसेप्टर का रिफ्रेश लॉजिक अपेक्षा के अनुरूप सक्रिय हो। |
getValue | एक BehaviorSubject के वर्तमान मूल्य तक पहुंच प्राप्त करता है, जो इस इंटरसेप्टर में यह सत्यापित करने के लिए आवश्यक है कि टोकन रीफ्रेश प्रक्रिया पहले से ही प्रगति पर है, एकाधिक रीफ्रेश अनुरोधों से बचें। |
कोणीय इंटरसेप्टर के साथ विश्वसनीय JWT प्रमाणीकरण सुनिश्चित करना
उपरोक्त उदाहरण में, जब भी 401 त्रुटि सामने आती है तो इंटरसेप्टर को एक अल्पकालिक JWT टोकन को स्वचालित रूप से रीफ्रेश करने के लिए डिज़ाइन किया गया है। संवेदनशील डेटा वाले अनुप्रयोगों में इस प्रकार का सेटअप आवश्यक है, जहां सत्र सुरक्षा बनाए रखना महत्वपूर्ण है, लेकिन उपयोगकर्ता अनुभव बाधित नहीं होना चाहिए। इंटरसेप्टर 401 (अनधिकृत) त्रुटि पकड़ता है और उपयोगकर्ता को पुन: प्रमाणित करने की आवश्यकता के बिना सत्र को नवीनीकृत करने के लिए रीफ्रेश टोकन अनुरोध शुरू करता है। यह प्रक्रिया कैचएरर फ़ंक्शन द्वारा ट्रिगर की जाती है, जो एक अवलोकन योग्य पाइपलाइन के भीतर त्रुटि प्रबंधन की अनुमति देती है। यहां, कोई भी HTTP त्रुटि, विशेष रूप से 401, संकेत देती है कि टोकन संभवतः समाप्त हो गया है और ताज़ा करने की प्रक्रिया शुरू करता है।
स्विचमैप फ़ंक्शन यहां एक अन्य मुख्य तत्व है; यह ताज़ा अनुरोध के लिए एक नई अवलोकन योग्य धारा बनाता है, जो पूरे प्रवाह को रद्द किए बिना पुराने अवलोकन योग्य को प्रतिस्थापित करता है। ताज़ा करने के बाद, यह मूल अनुरोध को पुनः प्रयास करता है, यह सुनिश्चित करता है कि नया टोकन लागू किया गया है। पुराने अवलोकन योग्य से नए में स्विच करके, इंटरसेप्टर टोकन नवीनीकरण को निर्बाध, गैर-अवरुद्ध तरीके से कर सकता है। वास्तविक समय अनुप्रयोगों के साथ काम करते समय यह तकनीक विशेष रूप से मूल्यवान है, क्योंकि यह सुरक्षित प्रमाणीकरण बनाए रखते हुए उपयोगकर्ता इंटरैक्शन में रुकावटों को कम करती है। उदाहरण के लिए, एक सुरक्षित वित्तीय डैशबोर्ड ब्राउज़ करने वाले उपयोगकर्ता को अनावश्यक रूप से रीडायरेक्ट या लॉग आउट नहीं किया जाएगा; इसके बजाय, नया टोकन प्राप्त किया जाता है और पृष्ठभूमि में लागू किया जाता है। 🔄
इसके अतिरिक्त, BehaviorSubject ताज़ा प्रक्रिया की स्थिति को प्रबंधित करके एक महत्वपूर्ण भूमिका निभाता है। यह RxJS उपयोगिता अंतिम उत्सर्जित मान को बनाए रख सकती है, जो विशेष रूप से तब सहायक होती है जब एक ही समय में कई अनुरोधों में 401 त्रुटि आती है। एकाधिक रिफ्रेश को ट्रिगर करने के बजाय, इंटरसेप्टर केवल एक टोकन रिफ्रेश शुरू करता है, और अन्य सभी अनुरोध इस एकल टोकन नवीनीकरण की प्रतीक्षा करने के लिए कतारबद्ध होते हैं। स्विचमैप के साथ बिहेवियरसब्जेक्ट का उपयोग यह सुनिश्चित करने में मदद करता है कि यदि एक अनुरोध रिफ्रेश को ट्रिगर करता है, तो नए टोकन की आवश्यकता वाले अन्य सभी अनुरोध बार-बार रिफ्रेश कॉल किए बिना अपडेट किए गए क्रेडेंशियल्स का उपयोग करेंगे। यह सुविधा उन मामलों में बेहद मददगार है जहां उपयोगकर्ताओं के पास कई खुले टैब हो सकते हैं, या ऐप एक साथ कई नेटवर्क कॉल प्रबंधित कर रहा है, इस प्रकार संसाधनों की बचत होती है और अत्यधिक सर्वर लोड से बचा जाता है।
इस इंटरसेप्टर तर्क का परीक्षण यह सुनिश्चित करने के लिए भी आवश्यक है कि यह विभिन्न परिदृश्यों में काम करता है, यही कारण है कि हम HttpTestingController को शामिल करते हैं। यह कोणीय परीक्षण उपकरण हमें नियंत्रित वातावरण में 401 अनधिकृत स्थिति की तरह HTTP प्रतिक्रियाओं का अनुकरण और परीक्षण करने में सक्षम बनाता है। HttpTestingController द्वारा प्रदान की गई विधि फ्लश का उपयोग करके, डेवलपर्स वास्तविक दुनिया की त्रुटि प्रतिक्रियाओं का अनुकरण कर सकते हैं और सत्यापित कर सकते हैं कि इंटरसेप्टर अपेक्षा के अनुरूप व्यवहार करता है। यह परीक्षण दृष्टिकोण हमें यह परिष्कृत करने की अनुमति देता है कि रिफ्रेश लॉजिक ऐप को तैनात करने से पहले विभिन्न मामलों को कितनी अच्छी तरह संभालता है। इन विधियों के साथ, इंटरसेप्टर न केवल सत्र को सुरक्षित रखता है बल्कि ऐप को नेविगेट करने वाले उपयोगकर्ताओं के लिए अधिक सहज, स्थिर अनुभव भी प्रदान करता है। 👩💻
एंगुलर के साथ जेडब्ल्यूटी इंटरसेप्टर को लागू करना: त्रुटि प्रबंधन और ताज़ा टोकन समाधान
त्रुटि प्रबंधन और सत्र प्रबंधन के लिए मॉड्यूलर सेवा संरचना के साथ एंगुलर का उपयोग करना
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpErrorResponse } from '@angular/common/http';
import { catchError, switchMap } from 'rxjs/operators';
import { Observable, throwError, BehaviorSubject } from 'rxjs';
import { AuthService } from './auth.service';
import { Router } from '@angular/router';
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
private refreshTokenInProgress$ = new BehaviorSubject<boolean>(false);
constructor(private authService: AuthService, private router: Router) {}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
req = req.clone({ withCredentials: true });
return next.handle(req).pipe(
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
return this.handle401Error(req, next);
}
return throwError(() => error);
})
);
}
private handle401Error(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (!this.refreshTokenInProgress$.getValue()) {
this.refreshTokenInProgress$.next(true);
return this.authService.refreshToken().pipe(
switchMap(() => {
this.refreshTokenInProgress$.next(false);
return next.handle(req.clone({ withCredentials: true }));
}),
catchError((error) => {
this.refreshTokenInProgress$.next(false);
this.authService.logout();
this.router.navigate(['/login'], { queryParams: { returnUrl: req.url } });
return throwError(() => error);
})
);
}
return this.refreshTokenInProgress$.pipe(
switchMap(() => next.handle(req.clone({ withCredentials: true })))
);
}
}
जेडब्ल्यूटी इंटरसेप्टर टोकन रिफ्रेश हैंडलिंग के लिए कोणीय इकाई परीक्षण
एंगुलर के इंटरसेप्टर में JWT रिफ्रेश और HTTP त्रुटि प्रबंधन का परीक्षण
import { TestBed } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { JwtInterceptor } from './jwt.interceptor';
import { HTTP_INTERCEPTORS, HttpClient } from '@angular/common/http';
import { AuthService } from './auth.service';
describe('JwtInterceptor', () => {
let httpMock: HttpTestingController;
let authServiceSpy: jasmine.SpyObj<AuthService>;
let httpClient: HttpClient;
beforeEach(() => {
authServiceSpy = jasmine.createSpyObj('AuthService', ['refreshToken', 'logout']);
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [
JwtInterceptor,
{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },
{ provide: AuthService, useValue: authServiceSpy }
]
});
httpMock = TestBed.inject(HttpTestingController);
httpClient = TestBed.inject(HttpClient);
});
afterEach(() => {
httpMock.verify();
});
it('should refresh token on 401 error and retry request', () => {
authServiceSpy.refreshToken.and.returnValue(of(true));
httpClient.get('/test').subscribe();
const req = httpMock.expectOne('/test');
req.flush(null, { status: 401, statusText: 'Unauthorized' });
expect(authServiceSpy.refreshToken).toHaveBeenCalled();
});
});
एंगुलर इंटरसेप्टर्स के साथ जेडब्ल्यूटी टोकन रिफ्रेश रणनीतियों का विस्तार
एंगुलर का उपयोग करने का एक महत्वपूर्ण पहलू जेडब्ल्यूटी टोकन इंटरसेप्टर सुरक्षित अनुप्रयोगों के लिए प्रमाणीकरण और सत्र समाप्ति के प्रबंधन की जटिलताओं को कुशलतापूर्वक संभाल रहा है। केवल 401 त्रुटियों को पकड़ने और टोकन को ताज़ा करने के अलावा, बहु-अनुरोध प्रबंधन और टोकन ताज़ा को अनुकूलित करने के बारे में सोचना आवश्यक है। जब कई अनुरोधों में एक साथ 401 त्रुटि आती है, तो एक समय में केवल एक टोकन रीफ्रेश होता है यह सुनिश्चित करने के लिए कतार या लॉकिंग तंत्र को लागू करना बेहद उपयोगी हो सकता है। यह दृष्टिकोण अनावश्यक एपीआई कॉल को रोकता है और लोड को कम करता है, विशेष रूप से उच्च-ट्रैफ़िक अनुप्रयोगों में, जबकि सभी कतारबद्ध अनुरोधों को ताज़ा होने के बाद आगे बढ़ने की अनुमति देता है।
कोणीय इंटरसेप्टर हमें टोकन भंडारण और पुनर्प्राप्ति को संभालने के तरीके को सुव्यवस्थित करने की भी अनुमति देता है। स्थानीय भंडारण में हार्डकोडिंग टोकन के बजाय, एंगुलर का उपयोग करना सबसे अच्छा है Httpकेवल कुकीज़ और सुरक्षा बढ़ाने के लिए सीएसआरएफ सुरक्षा। HttpOnly कुकीज़ के साथ, JWT को जावास्क्रिप्ट द्वारा एक्सेस या हेरफेर नहीं किया जा सकता है, जिससे सुरक्षा में काफी सुधार होता है लेकिन एक नई चुनौती जुड़ती है: यह सुनिश्चित करना कि अनुरोध स्वचालित रूप से ताज़ा कुकी उठाते हैं। एंगुलर का अंतर्निर्मित withCredentials विकल्प एक समाधान है, जो ब्राउज़र को प्रत्येक अनुरोध पर इन कुकीज़ को शामिल करने का निर्देश देता है।
उत्पादन परिवेश में, टोकन रिफ्रेश के साथ लोड के तहत एप्लिकेशन कैसे व्यवहार करता है, इस पर प्रदर्शन परीक्षण चलाने की सलाह दी जाती है। परीक्षण सेटअप उच्च अनुरोध मात्रा का अनुकरण कर सकते हैं, यह सुनिश्चित करते हुए कि इंटरसेप्टर का तर्क कुशलतापूर्वक स्केल करता है। व्यवहार में, यह सेटअप उपयोगकर्ता अनुभव को प्रभावित करने वाली टोकन-संबंधी त्रुटियों के जोखिम को कम करता है। इंटरसेप्टर रणनीति, जब उचित कुकी हैंडलिंग और परीक्षण के साथ जोड़ी जाती है, तो एक सहज, उपयोगकर्ता के अनुकूल और सुरक्षित एप्लिकेशन बनाए रखने में मदद मिलती है - चाहे ऐप महत्वपूर्ण वित्तीय डेटा या सामाजिक प्लेटफ़ॉर्म के उपयोगकर्ता सत्रों का प्रबंधन करता हो। 🌐🔐
एंगुलर इंटरसेप्टर्स के साथ जेडब्ल्यूटी टोकन हैंडलिंग पर सामान्य प्रश्न
- कैसे हुआ catchError JWT टोकन प्रबंधन में सहायता?
- का उपयोग करते हुए catchError एक इंटरसेप्टर के भीतर हमें 401 त्रुटियों की पहचान करने और टोकन समाप्त होने पर टोकन रीफ्रेश अनुरोधों को ट्रिगर करने की अनुमति मिलती है।
- क्यों BehaviorSubject के स्थान पर प्रयोग किया जाता है Subject ताज़ा स्थिति पर नज़र रखने के लिए?
- BehaviorSubject अंतिम उत्सर्जित मूल्य को बरकरार रखता है, जिससे यह एकाधिक रीफ्रेश कॉल को ट्रिगर किए बिना समवर्ती अनुरोधों में रीफ्रेश स्थिति प्रबंधित करने के लिए उपयोगी हो जाता है।
- क्या भूमिका है switchMap HTTP अनुरोधों को पुनः प्रयास करने में खेलें?
- switchMap केवल नवीनतम अवलोकन योग्य पूर्णता सुनिश्चित करते हुए, अवलोकन योग्य टोकन रीफ्रेश से पुन: प्रयास किए गए HTTP अनुरोध पर स्विच करने की अनुमति देता है।
- मैं एंगुलर में इंटरसेप्टर का परीक्षण कैसे कर सकता हूं?
- कोणीय का HttpTestingController यह सत्यापित करने के लिए कि इंटरसेप्टर तर्क सही ढंग से काम करता है, 401 त्रुटियों सहित HTTP प्रतिक्रियाओं का अनुकरण करने के लिए उपयोगी है।
- क्यों उपयोग करें? withCredentials क्लोन किए गए अनुरोध में?
- withCredentials फ़्लैग यह सुनिश्चित करता है कि प्रत्येक अनुरोध में सुरक्षित HttpOnly कुकीज़ शामिल हैं, जो सुरक्षित सत्र बनाए रखने के लिए महत्वपूर्ण है।
- मैं भारी ट्रैफ़िक के तहत टोकन रीफ्रेश हैंडलिंग को कैसे अनुकूलित कर सकता हूं?
- एकल का उपयोग करना BehaviorSubject या लॉकिंग तंत्र कई ताज़ा अनुरोधों को रोकने में मदद कर सकता है, उच्च-ट्रैफ़िक परिदृश्यों में प्रदर्शन में सुधार कर सकता है।
- सत्र समाप्ति पर इंटरसेप्टर उपयोगकर्ता अनुभव को कैसे प्रभावित करता है?
- इंटरसेप्टर स्वचालित सत्र नवीनीकरण को सक्षम बनाता है, जिससे उपयोगकर्ता अप्रत्याशित रूप से लॉग आउट नहीं होते हैं, जिससे एक सहज उपयोगकर्ता अनुभव प्राप्त होता है।
- कैसे हुआ clone अनुरोधों को संशोधित करने में सहायता?
- clone सेटिंग जैसे संशोधित गुणों के साथ अनुरोध की एक प्रति बनाता है withCredentials, मूल अनुरोध को बदले बिना।
- क्या इंटरसेप्टर एकाधिक उपयोगकर्ता सत्रों के साथ काम करता है?
- हाँ, लेकिन प्रत्येक सत्र को अपने JWT को स्वतंत्र रूप से प्रबंधित करने की आवश्यकता है, या ताज़ा तर्क को कई सत्रों के लिए अनुकूलित किया जाना चाहिए।
- क्या इंटरसेप्टर गैर-401 त्रुटियों को संभाल सकता है?
- हां, इंटरसेप्टर को अन्य त्रुटियों को पकड़ने के लिए बढ़ाया जा सकता है, जैसे कि 403 फॉरबिडन, और बेहतर यूएक्स के लिए उन्हें उचित रूप से संभाल सकता है।
कोणीय अनुप्रयोगों में JWT टोकन रिफ्रेश को सुव्यवस्थित करना
एंगुलर अनुप्रयोगों में उपयोगकर्ता अनुभव और सुरक्षा दोनों को बढ़ाने के लिए प्रभावी JWT टोकन प्रबंधन महत्वपूर्ण है। 401 त्रुटियों को पकड़ने के लिए एक इंटरसेप्टर लागू करके और स्वचालित रूप से एक टोकन रिफ्रेश शुरू करके, आप मजबूर लॉगआउट से बच सकते हैं और एक निर्बाध उपयोगकर्ता प्रवाह प्रदान कर सकते हैं। इसके अतिरिक्त, इसकी मदद से रिफ्रेश के दौरान समवर्ती अनुरोधों को संभालना व्यवहारविषय, यह सुनिश्चित करता है कि संसाधन उपयोग को अनुकूलित करते हुए केवल एक ताज़ा कॉल की जाए।
अंततः, लक्ष्य सुरक्षा और उपयोगकर्ता सुविधा के बीच संतुलन बनाना है। वास्तविक दुनिया के परिदृश्यों के लिए इंटरसेप्टर लॉजिक का नियमित रूप से परीक्षण और परिशोधन करने से आपका ऐप बिना किसी समस्या के बड़ी मात्रा में अनुरोधों को संभालने में सक्षम हो जाता है। टोकन प्रबंधन में सर्वोत्तम प्रथाओं को अपनाने से पूरे सत्र में एक सुरक्षित, उपयोगकर्ता के अनुकूल अनुभव बनाए रखने में मदद मिल सकती है। 👨💻
जेडब्ल्यूटी इंटरसेप्टर कार्यान्वयन के लिए संदर्भ और संसाधन
- Angular में HTTP इंटरसेप्टर बनाने की विस्तृत जानकारी आधिकारिक Angular दस्तावेज़ में पाई जा सकती है: कोणीय HTTP गाइड .
- JWT टोकन रिफ्रेश तंत्र और सर्वोत्तम प्रथाओं के प्रबंधन पर जानकारी के लिए, देखें Auth0 की ताज़ा टोकन गाइड .
- RxJS लाइब्रेरी इस आलेख में उपयोग किए गए ऑपरेटरों पर व्यापक विवरण प्रदान करती है, जिसमें शामिल हैं स्विचमैप और पकड़ने में त्रुटि: आरएक्सजेएस ऑपरेटर गाइड .
- कोणीय परीक्षण रणनीतियों के लिए Httpटेस्टिंगकंट्रोलर, एंगुलर की परीक्षण उपयोगिताओं पर संसाधनों की जाँच करें: कोणीय HTTP परीक्षण गाइड .