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
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
