Thanks Chanaka.
On Tue, Mar 4, 2014 at 2:06 PM, Chanaka Fernando <[email protected]> wrote: > Hi Waruna, > > You can handle exceptions in REST APIs with fault sequences. For the REST > error handling, there are well-known error codes. You can use those error > codes as HTTP_SC when you returning the error back to the client. > > http://www.restapitutorial.com/httpstatuscodes.html > > http://msdn.microsoft.com/en-us/library/windowsazure/dd179357.aspx > > Thanks, > Chanaka > > > > > On Tue, Mar 4, 2014 at 1:13 PM, Waruna Jayaweera <[email protected]> wrote: > >> Hi Krishantha, >> I also need to handle some exceptions on Rest calls. >> Is there any default value for HTTP_SC ? >> or Do we need to set it based on the filtering of ERROR_CODE. >> >> Thanks, >> Waruna >> >> >> On Tue, Feb 11, 2014 at 4:48 PM, Krishantha Dinesh >> <[email protected]>wrote: >> >>> problem solved. Thanks Dushan for guidance >>> >>> regex based on [1] >>> >>> <filter source="get-property('ERROR_CODE')" >>> regex="[1|3|4][0-9][0-9][0-9][0-9][0-9]"> >>> <then> >>> <property name="HTTP_SC" value="400" scope="axis2" /> >>> </then> >>> </filter> >>> >>> [1] http://docs.wso2.org/display/ESB460/Error+Handling+and+Error+Codes >>> >>> >>> >>> On Tue, Feb 11, 2014 at 10:48 AM, Dushan Abeyruwan <[email protected]>wrote: >>> >>>> Hi >>>> You can setup HTTP_SC in axis2 context set 400 (which represents bad >>>> Request) >>>> >>>> >>>> On Tue, Feb 11, 2014 at 10:42 AM, Krishantha Dinesh < >>>> [email protected]> wrote: >>>> >>>>> Hi Dushan, >>>>> Thanks for prompt reply. >>>>> I do agree with you. my concern is http response got which client get >>>>> on transport headers. >>>>> pls refer below >>>>> >>>>> This is what client get as exception >>>>> >>>>> <Response xmlns="http://cd-rhettige/services/paypal_lookupSale"> >>>>> >>>>> <error_code>101503</error_code> >>>>> >>>>> <error_message>Error connecting to the back end</error_message> >>>>> >>>>> </Response> >>>>> >>>>> >>>>> ======================================== >>>>> this is the raw content. pls pay your attention for http status code >>>>> >>>>> HTTP/1.1 200 OK >>>>> >>>>> Authorization: Bearer OQaph7mMZJbvNDJ-8u9ICVm4Q4kkJmNj.w5dQJZ5u8E >>>>> >>>>> Host: cd-rhettige:8280 >>>>> >>>>> Accept-Encoding: gzip,deflate >>>>> >>>>> Content-Type: application/json >>>>> >>>>> Date: Tue, 11 Feb 2014 05:06:58 GMT >>>>> >>>>> Server: WSO2-PassThrough-HTTP >>>>> >>>>> Transfer-Encoding: chunked >>>>> >>>>> Connection: Keep-Alive >>>>> >>>>> >>>>> >>>>> { "error_code":"101503", >>>>> >>>>> "error_message":"Error connecting to the back end" >>>>> >>>>> } >>>>> >>>>> >>>>> >>>>> On Tue, Feb 11, 2014 at 10:04 AM, Dushan Abeyruwan <[email protected]>wrote: >>>>> >>>>>> Hi, >>>>>> No its wrong, we shouldn't response with 200 OK for exceptions. IMO >>>>>> ideal way as I think, to do this by keep the catalog of connector >>>>>> specific >>>>>> error code and embedded in the error message and explain those _ >>>>>> _connector >>>>>> specific error _ _ catalog in documentation more specifically, and >>>>>> returning a generic error with status code to client. >>>>>> >>>>>> for error catalogs you could refer [1][2] >>>>>> [1]http://www.twilio.com/docs/errors/reference >>>>>> [2] >>>>>> http://www.stormpath.com/blog/spring-mvc-rest-exception-handling-best-practices-part-1 >>>>>> e.g >>>>>> >>>>>> >>>>>> >>>>>> { >>>>>> "status": 404, >>>>>> * "code": 40483,* >>>>>> "message": "Oops! It looks like that file does not exist.", >>>>>> "developerMessage": "File resource for path /uploads/foobar.txt does >>>>>> not exist. Please wait 10 minutes until the upload batch completes >>>>>> before checking again.", >>>>>> "moreInfo": "http://www.mycompany.com/errors/40483" >>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Feb 11, 2014 at 9:51 AM, Krishantha Dinesh < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi Dushan/Dev >>>>>>> I tried ur solution and its work. but i have other question. when it >>>>>>> catch FAULT (500 error) on return message of client http code is 200 OK >>>>>>> for example let say endpoint is fail the it catch that fault. but in >>>>>>> client point of view http respond code of his response is 200 >>>>>>> >>>>>>> other than 500 client getting correct http response code. the >>>>>>> problem may be this is originate by ESB it self than come as response to >>>>>>> ESB. btw is there any solution for this. >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, Feb 8, 2014 at 7:30 PM, Dushan Abeyruwan <[email protected]>wrote: >>>>>>> >>>>>>>> Hi Kirshantha, >>>>>>>> Handling fault has two flavors, >>>>>>>> >>>>>>>> - Handle internal fault such as service EP not available and >>>>>>>> all the issues related . >>>>>>>> - Handle Service faults. >>>>>>>> >>>>>>>> >>>>>>>> Ideally when BE is SOAP and if it returns SOAP fault in order to >>>>>>>> handle such queries we normally append FORCE_ERROR_ON_SOAP_FAULT >>>>>>>> property, >>>>>>>> this works only of BE return Service faults and when such happen if we >>>>>>>> need >>>>>>>> to divert such responses to the faultSequence that we have defined. >>>>>>>> On the other hand if that is RESTful BE, we do not have a >>>>>>>> inbuilt function to determine whether its a fault at transport level, >>>>>>>> so >>>>>>>> the workaround that we normally do is to use the Filter base on the >>>>>>>> HTTP_SC. >>>>>>>> If you look at [1] status codes represents 100 series and 200- >>>>>>>> series regards as non faulty responses, and other than that we can >>>>>>>> determine them as faults or defect, to overcome such station when deal >>>>>>>> with >>>>>>>> RESTful services personally I am using filters i.e >>>>>>>> >>>>>>>> OutSequence ..etc , below logic just evaluates the response and if >>>>>>>> that not falls between 200 series normally you can add your customize >>>>>>>> faulty response logic .. >>>>>>>> >>>>>>>> <filter source="$axis2:HTTP_SC" regex="^[^2][0-9][0-9]"> >>>>>>>> <then> >>>>>>>> <log level="custom"> >>>>>>>> >>>>>>>> - can include payload >>>>>>>> - can setup HTTP_SC to axis2 context >>>>>>>> - can use <respond> mediator to reply client with error. >>>>>>>> >>>>>>>> .............. >>>>>>>> .............. >>>>>>>> >>>>>>>> </then> >>>>>>>> </filter> >>>>>>>> >>>>>>>> >>>>>>>> [1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Feb 7, 2014 at 7:54 PM, Krishantha Dinesh < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> I have used following code to handle error on soap call >>>>>>>>> >>>>>>>>> proxy >>>>>>>>> ============== >>>>>>>>> >>>>>>>>> <faultSequence> >>>>>>>>> <makefault version="soap11"> >>>>>>>>> <code xmlns:tns=" >>>>>>>>> http://www.w3.org/2003/05/soap-envelope" >>>>>>>>> value="get-property('FAULT_CODE')" /> >>>>>>>>> <reason expression="get-property('ERROR_CODE')" /> >>>>>>>>> <detail expression="get-property('ERROR_MESSAGE')" >>>>>>>>> /> >>>>>>>>> </makefault> >>>>>>>>> <send /> >>>>>>>>> </faultSequence> >>>>>>>>> >>>>>>>>> Output >>>>>>>>> ============== >>>>>>>>> <soapenv:Envelope xmlns:soapenv=" >>>>>>>>> http://schemas.xmlsoap.org/soap/envelope/"> >>>>>>>>> <soapenv:Body> >>>>>>>>> <soapenv:Fault> >>>>>>>>> <faultcode xmlns:tns=" >>>>>>>>> http://www.w3.org/2003/05/soap-envelope">123456</faultcode> >>>>>>>>> <faultstring>abc</faultstring> >>>>>>>>> <detail>xyz</detail> >>>>>>>>> </soapenv:Fault> >>>>>>>>> </soapenv:Body> >>>>>>>>> </soapenv:Envelope> >>>>>>>>> >>>>>>>>> >>>>>>>>> I need to know what is the best approach to handle exception on >>>>>>>>> REST calls. >>>>>>>>> >>>>>>>>> i tried to apply same way just for try but it only give >>>>>>>>> ERROR_MESSAGE not another... >>>>>>>>> >>>>>>>>> my expectation is to deliver all exception to client (caller). eg: >>>>>>>>> transport error due to unavailable endpoint.. etc >>>>>>>>> >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Dev mailing list >>>>>>>>> [email protected] >>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Dushan Abeyruwan | Associate Tech Lead >>>>>>>> Integration Technologies Team >>>>>>>> PMC Member Apache Synpase >>>>>>>> WSO2 Inc. http://wso2.com/ >>>>>>>> Blog:http://dushansview.blogspot.com/ >>>>>>>> Mobile:(0094)713942042 >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Dushan Abeyruwan | Associate Tech Lead >>>>>> Integration Technologies Team >>>>>> PMC Member Apache Synpase >>>>>> WSO2 Inc. http://wso2.com/ >>>>>> Blog:http://dushansview.blogspot.com/ >>>>>> Mobile:(0094)713942042 >>>>>> >>>>>> >>>>> >>>> >>>> >>>> -- >>>> Dushan Abeyruwan | Associate Tech Lead >>>> Integration Technologies Team >>>> PMC Member Apache Synpase >>>> WSO2 Inc. http://wso2.com/ >>>> Blog:http://dushansview.blogspot.com/ >>>> Mobile:(0094)713942042 >>>> >>>> >>> >>> _______________________________________________ >>> Dev mailing list >>> [email protected] >>> http://wso2.org/cgi-bin/mailman/listinfo/dev >>> >>> >> >> >> -- >> Regards, >> >> Waruna Lakshitha Jayaweera >> Software Engineer >> WSO2 Inc; http://wso2.com >> phone: +94713255198 >> >> _______________________________________________ >> Dev mailing list >> [email protected] >> http://wso2.org/cgi-bin/mailman/listinfo/dev >> >> > > > -- > -- > Chanaka Fernando > Technical Lead > WSO2, Inc.; http://wso2.com > lean.enterprise.middleware > > mobile: +94 773337238 > Blog : http://soatutorials.blogspot.com > LinkedIn:http://www.linkedin.com/pub/chanaka-fernando/19/a20/5b0 > Twitter:https://twitter.com/chanakaudaya > Wordpress:http://chanakaudaya.wordpress.com > > > > -- Regards, Waruna Lakshitha Jayaweera Software Engineer WSO2 Inc; http://wso2.com phone: +94713255198
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
