[ 
https://issues.apache.org/jira/browse/FLINK-7551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16596551#comment-16596551
 ] 

ASF GitHub Bot commented on FLINK-7551:
---------------------------------------

zentol commented on a change in pull request #6602:  [FLINK-7551][rest] Add 
versioning to REST API
URL: https://github.com/apache/flink/pull/6602#discussion_r213742055
 
 

 ##########
 File path: 
flink-runtime/src/main/java/org/apache/flink/runtime/rest/RestServerEndpoint.java
 ##########
 @@ -364,22 +364,37 @@ public String getRestBaseUrl() {
                }
        }
 
-       private static void registerHandler(Router router, 
Tuple2<RestHandlerSpecification, ChannelInboundHandler> specificationHandler) {
-               switch (specificationHandler.f0.getHttpMethod()) {
+       private static void registerHandler(Router router, 
Tuple2<RestHandlerSpecification, ChannelInboundHandler> specificationHandler, 
Logger log) {
+               final String handlerURL = 
specificationHandler.f0.getTargetRestEndpointURL();
+               // setup versioned urls
+               for (final RestAPIVersion supportedVersion : 
specificationHandler.f0.getSupportedAPIVersions()) {
+                       final String versionedHandlerURL = '/' + 
supportedVersion.getURLVersionPrefix() + handlerURL;
+                       log.debug("Register handler {} under {}@{}.", 
specificationHandler.f1, specificationHandler.f0.getHttpMethod(), 
versionedHandlerURL);
+                       registerHandler(router, versionedHandlerURL, 
specificationHandler.f0.getHttpMethod(), specificationHandler.f1);
+               }
+               // setup unversioned url for convenience and backwards 
compatibility
+               // this url will always point to the oldest supported version
+               // this is controlled by the order in which handler are 
registered
+               log.debug("Register handler {} under {}@{}.", 
specificationHandler.f1, specificationHandler.f0.getHttpMethod(), handlerURL);
+               registerHandler(router, handlerURL, 
specificationHandler.f0.getHttpMethod(), specificationHandler.f1);
 
 Review comment:
   I'm not sure what you mean with legacy handlers.
   
   The goal here is to always keep the oldest version as the default. So, 
currently `v1` is the default, and if we remove that at any point then `v2` 
will be the new default.
   
   Basically, we have 2 options for dealing with unversioned URLS in the future:
   * remove unversioned URLs altogether, in which case explicit UNVERSIONED is 
useful for the time being
   * always keep a default version, in which case UNVERSIONED is not useful as 
we have to carry it over whenever we remove an API which is prone to errors

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Add VERSION to the REST urls. 
> ------------------------------
>
>                 Key: FLINK-7551
>                 URL: https://issues.apache.org/jira/browse/FLINK-7551
>             Project: Flink
>          Issue Type: Improvement
>          Components: REST
>    Affects Versions: 1.4.0
>            Reporter: Kostas Kloudas
>            Assignee: Chesnay Schepler
>            Priority: Critical
>              Labels: pull-request-available
>             Fix For: 1.7.0
>
>
> This is to guarantee that we can update the REST API without breaking 
> existing third-party clients.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to