Written by

Project Manager & Head of Interoperability at Salutic Soluciones, S.L.
Question Kurro Lopez · May 4, 2017

REST API method name Case insensitive

Hi all,

I've a RESP API service in a Business Service to server different methods

I've created the route with the name of the method, each one has been created in lowercase 

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="/user" Method="POST" Call="User"/>
    <Route Url="/emailactivation" Method="POST" Call="EmailActivation" />
    <Route Url="/login" Method="POST" Call="Login"/>
</Routes>
}

But only there is a response if the call is used in lowercase

http://localhost:57772/mynamespace/emailactivation

my question is, is it possible to create a case insensitive  method name?

Best regards

Comments

Eduard Lebedyuk · May 4, 2017

Adding this to your REST broker may help:

/// Dispatch a REST request according to URL and Method
ClassMethod DispatchRequest(pUrl As %String, pMethod As %String, pForwarded As %Boolean = 0) As %Status
{
    set pUrl = $zcvt(pUrl, "l")
    quit ##super(pUrl, pMethod, pForwarded)
}
0
Dmitry Maslennikov · May 4, 2017

When you define UrlMap, you should remember, that Caché uses Regular expressions. So, you can just put (?i) before Url, to make regular expression case insensitive

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="(?i)/user" Method="POST" Call="User"/>
    <Route Url="(?i)/emailactivation" Method="POST" Call="EmailActivation" />
    <Route Url="(?i)/login" Method="POST" Call="Login"/>
</Routes>
}
0