filmov
tv
13. Filters to Handle Exceptions in ASP.NET Core API

Показать описание
இந்த டெமோவில், ASP.NET கோரில் வடிப்பான்களைப் பயன்படுத்தி API பதில்களை எவ்வாறு மாற்றுவது என்பதை ஆராய்வோம். கோரிக்கை-செயலாக்க பைப்லைனின் பல்வேறு நிலைகளில் குறியீட்டை இயக்க வடிகட்டிகள் உங்களை அனுமதிக்கின்றன, குறிப்பிட்ட செயல்களுக்கு முன்னும் பின்னும் தர்க்கத்தை இயக்க வாய்ப்புகளை வழங்குகின்றன.
ASP.NET கோரில் பல வடிகட்டி வகைகள் உள்ளன, ஒவ்வொன்றும் வெவ்வேறு புள்ளிகளில் செயல்படுத்தப்படுகின்றன:
- **அங்கீகார வடிப்பான்கள்**: பயனர் அங்கீகாரத்தைத் தீர்மானிக்க இவை முதலில் இயங்கும். ஒரு பயனருக்கு அங்கீகாரம் இல்லையென்றால், பைப்லைன் ஷார்ட் சர்க்யூட் செய்யப்பட்டு, ஒரு பதில் திருப்பி அனுப்பப்படும்.
- **வள வடிப்பான்கள்**: அங்கீகாரத்திற்குப் பிறகு செயல்படுத்தப்படும், இவை பிரதான கோரிக்கை பைப்லைனுக்கு முன் இயங்கும், ஆனால் அங்கீகார சரிபார்ப்புகளுக்குப் பிறகு இயங்கும்.
- **செயல் வடிப்பான்கள்**: இவை ஒரு செயல் முறை செயல்படுத்தப்படுவதற்கு முன்னும் பின்னும் இயங்கும், இது வாதங்களில் மாற்றங்களை அனுமதிக்கிறது மற்றும் செயலிலிருந்து முடிவு திரும்பப் பெறப்படுகிறது.
- **விதிவிலக்கு வடிப்பான்கள்**: ஒரு பதில் உடல் உருவாக்கப்படுவதற்கு முன்பு ஏற்படக்கூடிய கையாளப்படாத விதிவிலக்குகளுக்கு இவை உலகளாவிய கொள்கைகளைப் பயன்படுத்துகின்றன. இது எங்கள் டெமோவில் நாங்கள் செயல்படுத்தும் வடிகட்டி வகை.
- **முடிவு வடிப்பான்கள்**: செயல் முடிவை செயல்படுத்துவதற்கு முன்னும் பின்னும், செயல் வெற்றிகரமாகச் செயல்படுத்தப்படும் போது மட்டுமே இயக்கவும்.
எங்கள் டெமோவில், கையாளப்படாத விதிவிலக்குகளை குறிப்பாகப் பிடிக்கும் விதிவிலக்கு வடிப்பானை உருவாக்குவோம். `IEventDataService` இல் `GetExternalEvents` முறையைப் பார்ப்போம், இது Google Calendar இலிருந்து நிகழ்வுகளைப் பெறுவதை உருவகப்படுத்துகிறது மற்றும் ஒரு தனிப்பயன் விதிவிலக்கை, `ExternalDependencyException` ஐ எறியலாம், இது ஒரு பிழையைக் குறிக்கிறது, இது ஒரு நிலைக் குறியீடு மற்றும் கூடுதல் பண்புகளுடன் நிறைவடைகிறது.
அடுத்து, `ExternalDependencyException` ஐ வரையறுக்கிறோம், இது அடிப்படை `Exception` வகுப்பிலிருந்து பெறப்படுகிறது. இந்த விதிவிலக்கு வீசப்படும்போது என்ன நடக்கிறது என்பதை ஆராய, வெளிப்புற நிகழ்வுகளுக்கான API எண்ட்பாயிண்டை அழைக்கலாம். இது விதிவிலக்கைத் தூண்டும், மேலும் இது இயல்புநிலையாக கையாளப்படாத பிழையைக் குறிப்பதால், 500 நிலைக் குறியீடு உட்பட பொதுவான பிழை விவரங்களுடன் வடிவமைக்கப்பட்ட பதிலைப் பெறுவீர்கள்.
இந்த விதிவிலக்கை அழகாகக் கையாள, `IActionFilter` மற்றும் `IOrderedFilter` ஆகியவற்றை செயல்படுத்தும் `ExternalDependencyExceptionFilter` என்ற தனிப்பயன் வடிப்பானை உருவாக்குகிறோம். செயல்படுத்தும் வரிசை குறிப்பிடப்பட வேண்டும் - குறைந்த மதிப்புகள் வேகமாகச் செயல்படும் - எங்கள் வடிப்பானை செயல்படுத்தும் பைப்லைனின் முடிவில் வைக்க வேண்டும்.
வடிப்பானில், `OnActionExecuting` முறையை செயல்படுத்துகிறோம், ஆனால் அங்கு எதையும் மாற்ற வேண்டிய அவசியமில்லை. விசை `OnActionExecuted` முறையில் உள்ளது, அங்கு நாம் விதிவிலக்குகளைப் பிடித்து கையாளலாம். இங்கே வீசப்பட்ட விதிவிலக்கு எங்கள் தனிப்பயன் `ExternalDependencyException` உடன் பொருந்துகிறதா என்று சரிபார்க்கிறோம்.
அப்படிச் செய்தால், ஒரு புதிய `ObjectResult` ஐ உருவாக்கி, அசல் விதிவிலக்கிலிருந்து தரவை நிரப்பி, பொருத்தமான நிலைக் குறியீட்டை அமைக்கிறோம். பிழை கையாளப்படாததாகக் கருதப்படுவதைத் தடுக்க `context.ExceptionHandled = true` ஐ அமைப்பது மிகவும் முக்கியம், இல்லையெனில் செயலாக்கம் பிழை கையாளுதல் கட்டுப்படுத்திக்கு திருப்பி விடப்படும்.
இறுதியாக, MVC விருப்பங்கள் உள்ளமைவில் `ExternalDependencyExceptionFilter` ஐச் சேர்ப்பதன் மூலம் பயன்பாட்டில் பதிவு செய்கிறோம். பயன்பாட்டை மீண்டும் இயக்கி வெளிப்புற நிகழ்வுகள் API ஐ அழைத்த பிறகு, மாற்றியமைக்கப்பட்ட மறுமொழி வடிவமைப்பை நாம் கவனிக்க வேண்டும், இதன் விளைவாக எங்கள் தனிப்பயன் பிழைக் குறியீடு மற்றும் அசல் விதிவிலக்கிலிருந்து பண்புகளுடன் "தோல்வியடைந்த சார்பு" என்பதைக் குறிக்கும் நிலைக் குறியீடு கிடைக்கும்.
--------===============================================================-----------
In this demo, we'll explore modifying API responses using filters in ASP.NET Core. Filters execute code at various stages of the request-processing pipeline.
The main types of filters are:
- **Authorization Filters**: Check user authorization first.
- **Resource Filters**: Run after authorization but before the main pipeline.
- **Action Filters**: Run right before and after action methods, allowing argument and result modifications.
- **Exception Filters**: Handle unhandled exceptions globally.
- **Result Filters**: Run before and after action results upon successful execution.
We'll create an exception filter, `ExternalDependencyExceptionFilter`, to catch unhandled exceptions. This filter checks for `ExternalDependencyException`, which simulates errors when fetching events from Google Calendar.
In the `OnActionExecuted` method, we catch the custom exception, create an `ObjectResult`, and set the response status code accordingly. Setting `context.ExceptionHandled = true` prevents the default error handling.
Finally, we register our filter in MVC options. After re-running the application and calling the API, the modified response will provide a "Failed Dependency" status, along with details from the original exception. This enhances error handling and provides users with meaningful feedback.
ASP.NET கோரில் பல வடிகட்டி வகைகள் உள்ளன, ஒவ்வொன்றும் வெவ்வேறு புள்ளிகளில் செயல்படுத்தப்படுகின்றன:
- **அங்கீகார வடிப்பான்கள்**: பயனர் அங்கீகாரத்தைத் தீர்மானிக்க இவை முதலில் இயங்கும். ஒரு பயனருக்கு அங்கீகாரம் இல்லையென்றால், பைப்லைன் ஷார்ட் சர்க்யூட் செய்யப்பட்டு, ஒரு பதில் திருப்பி அனுப்பப்படும்.
- **வள வடிப்பான்கள்**: அங்கீகாரத்திற்குப் பிறகு செயல்படுத்தப்படும், இவை பிரதான கோரிக்கை பைப்லைனுக்கு முன் இயங்கும், ஆனால் அங்கீகார சரிபார்ப்புகளுக்குப் பிறகு இயங்கும்.
- **செயல் வடிப்பான்கள்**: இவை ஒரு செயல் முறை செயல்படுத்தப்படுவதற்கு முன்னும் பின்னும் இயங்கும், இது வாதங்களில் மாற்றங்களை அனுமதிக்கிறது மற்றும் செயலிலிருந்து முடிவு திரும்பப் பெறப்படுகிறது.
- **விதிவிலக்கு வடிப்பான்கள்**: ஒரு பதில் உடல் உருவாக்கப்படுவதற்கு முன்பு ஏற்படக்கூடிய கையாளப்படாத விதிவிலக்குகளுக்கு இவை உலகளாவிய கொள்கைகளைப் பயன்படுத்துகின்றன. இது எங்கள் டெமோவில் நாங்கள் செயல்படுத்தும் வடிகட்டி வகை.
- **முடிவு வடிப்பான்கள்**: செயல் முடிவை செயல்படுத்துவதற்கு முன்னும் பின்னும், செயல் வெற்றிகரமாகச் செயல்படுத்தப்படும் போது மட்டுமே இயக்கவும்.
எங்கள் டெமோவில், கையாளப்படாத விதிவிலக்குகளை குறிப்பாகப் பிடிக்கும் விதிவிலக்கு வடிப்பானை உருவாக்குவோம். `IEventDataService` இல் `GetExternalEvents` முறையைப் பார்ப்போம், இது Google Calendar இலிருந்து நிகழ்வுகளைப் பெறுவதை உருவகப்படுத்துகிறது மற்றும் ஒரு தனிப்பயன் விதிவிலக்கை, `ExternalDependencyException` ஐ எறியலாம், இது ஒரு பிழையைக் குறிக்கிறது, இது ஒரு நிலைக் குறியீடு மற்றும் கூடுதல் பண்புகளுடன் நிறைவடைகிறது.
அடுத்து, `ExternalDependencyException` ஐ வரையறுக்கிறோம், இது அடிப்படை `Exception` வகுப்பிலிருந்து பெறப்படுகிறது. இந்த விதிவிலக்கு வீசப்படும்போது என்ன நடக்கிறது என்பதை ஆராய, வெளிப்புற நிகழ்வுகளுக்கான API எண்ட்பாயிண்டை அழைக்கலாம். இது விதிவிலக்கைத் தூண்டும், மேலும் இது இயல்புநிலையாக கையாளப்படாத பிழையைக் குறிப்பதால், 500 நிலைக் குறியீடு உட்பட பொதுவான பிழை விவரங்களுடன் வடிவமைக்கப்பட்ட பதிலைப் பெறுவீர்கள்.
இந்த விதிவிலக்கை அழகாகக் கையாள, `IActionFilter` மற்றும் `IOrderedFilter` ஆகியவற்றை செயல்படுத்தும் `ExternalDependencyExceptionFilter` என்ற தனிப்பயன் வடிப்பானை உருவாக்குகிறோம். செயல்படுத்தும் வரிசை குறிப்பிடப்பட வேண்டும் - குறைந்த மதிப்புகள் வேகமாகச் செயல்படும் - எங்கள் வடிப்பானை செயல்படுத்தும் பைப்லைனின் முடிவில் வைக்க வேண்டும்.
வடிப்பானில், `OnActionExecuting` முறையை செயல்படுத்துகிறோம், ஆனால் அங்கு எதையும் மாற்ற வேண்டிய அவசியமில்லை. விசை `OnActionExecuted` முறையில் உள்ளது, அங்கு நாம் விதிவிலக்குகளைப் பிடித்து கையாளலாம். இங்கே வீசப்பட்ட விதிவிலக்கு எங்கள் தனிப்பயன் `ExternalDependencyException` உடன் பொருந்துகிறதா என்று சரிபார்க்கிறோம்.
அப்படிச் செய்தால், ஒரு புதிய `ObjectResult` ஐ உருவாக்கி, அசல் விதிவிலக்கிலிருந்து தரவை நிரப்பி, பொருத்தமான நிலைக் குறியீட்டை அமைக்கிறோம். பிழை கையாளப்படாததாகக் கருதப்படுவதைத் தடுக்க `context.ExceptionHandled = true` ஐ அமைப்பது மிகவும் முக்கியம், இல்லையெனில் செயலாக்கம் பிழை கையாளுதல் கட்டுப்படுத்திக்கு திருப்பி விடப்படும்.
இறுதியாக, MVC விருப்பங்கள் உள்ளமைவில் `ExternalDependencyExceptionFilter` ஐச் சேர்ப்பதன் மூலம் பயன்பாட்டில் பதிவு செய்கிறோம். பயன்பாட்டை மீண்டும் இயக்கி வெளிப்புற நிகழ்வுகள் API ஐ அழைத்த பிறகு, மாற்றியமைக்கப்பட்ட மறுமொழி வடிவமைப்பை நாம் கவனிக்க வேண்டும், இதன் விளைவாக எங்கள் தனிப்பயன் பிழைக் குறியீடு மற்றும் அசல் விதிவிலக்கிலிருந்து பண்புகளுடன் "தோல்வியடைந்த சார்பு" என்பதைக் குறிக்கும் நிலைக் குறியீடு கிடைக்கும்.
--------===============================================================-----------
In this demo, we'll explore modifying API responses using filters in ASP.NET Core. Filters execute code at various stages of the request-processing pipeline.
The main types of filters are:
- **Authorization Filters**: Check user authorization first.
- **Resource Filters**: Run after authorization but before the main pipeline.
- **Action Filters**: Run right before and after action methods, allowing argument and result modifications.
- **Exception Filters**: Handle unhandled exceptions globally.
- **Result Filters**: Run before and after action results upon successful execution.
We'll create an exception filter, `ExternalDependencyExceptionFilter`, to catch unhandled exceptions. This filter checks for `ExternalDependencyException`, which simulates errors when fetching events from Google Calendar.
In the `OnActionExecuted` method, we catch the custom exception, create an `ObjectResult`, and set the response status code accordingly. Setting `context.ExceptionHandled = true` prevents the default error handling.
Finally, we register our filter in MVC options. After re-running the application and calling the API, the modified response will provide a "Failed Dependency" status, along with details from the original exception. This enhances error handling and provides users with meaningful feedback.