You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@syncope.apache.org by Jan Bernhardt <jb...@talend.com> on 2012/11/05 12:55:18 UTC
[DISCUSS] REST API URL
Hi @all,
I'm currently thinking of the be way to handle multi versions within Syncope REST API. I would like to get your feedback on how this could be done best.
Even thou we will do our best to keep the REST API as stable as possible, so that 3rd party applications using syncope, don't have to update their code frequently, there will be changes necessary from time to time. By providing a mechanism to choose a specific API version, we should be able to support backwards-compatibility much better.
1. URL encoded Version Number
Since every Call to Syncope core will be done throw an REST call on a specific URL, we could include a Version-Number in this URL to identify the targeted (request/response) version.
Sample: http://www.myserver.com/syncope/rest/v2.0/user
2. Version Number included in Namespace
We could also use different Namespaces (that contain a version number) for Request/Response messages.
I think, that the first approach would be the best choice because not all contents are XML/Namespace based.
Do you have further ideas or arguments for one or the other solution?
Best regards
Jan
Re: [DISCUSS] REST API URL
Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Jan
On 05/11/12 11:55, Jan Bernhardt wrote:
> Hi @all,
>
> I'm currently thinking of the be way to handle multi versions within Syncope REST API. I would like to get your feedback on how this could be done best.
> Even thou we will do our best to keep the REST API as stable as possible, so that 3rd party applications using syncope, don't have to update their code frequently, there will be changes necessary from time to time. By providing a mechanism to choose a specific API version, we should be able to support backwards-compatibility much better.
>
>
> 1. URL encoded Version Number
> Since every Call to Syncope core will be done throw an REST call on a specific URL, we could include a Version-Number in this URL to identify the targeted (request/response) version.
> Sample: http://www.myserver.com/syncope/rest/v2.0/user
>
> 2. Version Number included in Namespace
> We could also use different Namespaces (that contain a version number) for Request/Response messages.
>
> I think, that the first approach would be the best choice because not all contents are XML/Namespace based.
>
> Do you have further ideas or arguments for one or the other solution?
>
Starting from the 1st approach seems like a good idea.
You can also consider supporting both URIs, ex,
"http://www.myserver.com/syncope/rest/v2.0/user" and
http://www.myserver.com/syncope/rest/user" both resolving to the same
service class, with "http://www.myserver.com/syncope/rest/user" always
resolving to the current service code. You can do it in CXF by
configuring CXFServlet to redirect to the current (versioned) URI, or
have two JAX-RS endpoints listening at different addresses and sharing
the same service bean.
Also, FYI, CXF TransformationFeature will help with keeping both
backward and forward compatibility at the XML level:
http://cxf.apache.org/docs/transformationfeature.html
Andrei S. has just added XSLTFeature too to get more complex cases covered
As a side note, may be it is possible to drop 'rest' from URI.
Cheers, Sergey
> Best regards
> Jan
>