Of course. You can extract the error codes from the response and make any custom changes in the out sequence path (or within fault sequence) and then send the response back to the client.
On Thu, Mar 6, 2014 at 12:31 PM, Udara Liyanage <[email protected]> wrote: > 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 > -- -- 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
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
