Versión RESTful API

Solapas principales

Esta es la traducción del pregunta original.

Hola,

Necesitamos crear una versión de una API existente, por lo que vamos a establecer una versión predeterminada (hasta ahora) para las conexiones actuales a la versión 1

Mi primer intento es:

XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ]
{
<Routes>
    <Route Url="(?i)/check" Method="GET" Call="CheckApi"/>
    <Route Url="(?i)/getcustomer" Method="POST" Call="GetCustomerDefault"/>
    <Route Url="(?i)/revoke" Method="DELETE" Call="RevokeDefault"/>
    <Route Url="(?i)/:version/getcustomer" Method="POST" Call="GetCustomer"/>
    <Route Url="(?i)/:version/revoke" Method="DELETE" Call="Revoke"/>
</Routes>
}
 
Parameter DEFAULTVERSION = 1;
 
Parameter CURRENTVERSION = 2;
/// Get customer info (API version default)
ClassMethod GetCustomerDefault() As %Status
{
    quit ..GetCustomer(..#DEFAULTVERSION)
}
 
ClassMethod GetCustomer(pVersion As %IntegerAs %Status
{
    // This is the code for all version. Get the Id and pass into the message
    ........
    quit $$$OK
}
 
 

 

Además, tengo un parámetro llamado DEFAULTVERSION con valor 1

De esta manera, las llamadas más nuevas tendrán el número de versión y la respuesta según la versión de API

La URL será:

apiserver.com/api/2/getCustomer

Estoy comprobando si la versión es menor que una CURRENTACTUAL, la llamada está bien

Según una nueva especificación, la URL será "api/v2/getCustomer", antes era un número entero, y ahora será una cadena.

 

¿Cómo puedo verificar si este parámetro está bien formado (v y número), luego puedo evaluar si el número es una versión API válida?

Podemos cambiar nuestra versión, por lo que cualquier sugerencia será bienvenida.

Respuestas

Hola,

No es posible porque el cliente tiene instalado una versión Healthcare 2017.2 y no tiene mucha intención de cambiar de aplicación. Además, las dos versiones han de convivir simultaneamente en producción.