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.

  • 0
  • 0
  • 55
  • 1
  • 1

Respuestas

Hola Francisco,

¿no os podéis plantear trabajar con el API Manager como explican David y Alberto aquí?

https://es.community.intersystems.com/post/nuevo-v%C3%ADdeo-desarrollar-...
 

Así no tendrías que preocuparte de si te están accediendo a la api correcta, solo habría una publicada y tú podrías estar trabajando en las versiones que quisieras y luego pasarla a producción sin cambiar la url de acceso.

 

Saludos!

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.