Hi Chanaka, I have few concerns when using error codes, 1) Is it possible to client to know the exact error message (say a custom exception) that occurred in back end?
On Tue, Mar 4, 2014 at 4:14 AM, Waruna Jayaweera <[email protected]> wrote: > 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 > > -- Udara Liyanage Software Engineer WSO2, Inc.: http://wso2.com lean. enterprise. middleware web: http://udaraliyanage.wordpress.com phone: +94 71 443 6897
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
