前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊Eureka Server的REST API

聊聊Eureka Server的REST API

作者头像
code4it
发布2018-09-17 16:33:23
1.5K0
发布2018-09-17 16:33:23
举报
文章被收录于专栏:码匠的流水账码匠的流水账

本文主要研究下Eureka Server的REST API

ApplicationsResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/ApplicationsResource.java

代码语言:javascript
复制
@Path("/{version}/apps")
@Produces({"application/xml", "application/json"})
public class ApplicationsResource {
    @Path("{appId}")
    public ApplicationResource getApplicationResource(
            @PathParam("version") String version,
            @PathParam("appId") String appId) {
        CurrentRequestVersion.set(Version.toEnum(version));
        return new ApplicationResource(appId, serverConfig, registry);
    }

    //...
    @GET
    public Response getContainers(@PathParam("version") String version,
                                  @HeaderParam(HEADER_ACCEPT) String acceptHeader,
                                  @HeaderParam(HEADER_ACCEPT_ENCODING) String acceptEncoding,
                                  @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept,
                                  @Context UriInfo uriInfo,
                                  @Nullable @QueryParam("regions") String regionsStr) {
                                  //...
    }

    @Path("delta")
    @GET
    public Response getContainerDifferential(
            @PathParam("version") String version,
            @HeaderParam(HEADER_ACCEPT) String acceptHeader,
            @HeaderParam(HEADER_ACCEPT_ENCODING) String acceptEncoding,
            @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept,
            @Context UriInfo uriInfo, @Nullable @QueryParam("regions") String regionsStr) { 
            //...
    }                                     

}

这里提供三个接口:

  • /{version}/apps/{appId}
  • /{version}/apps
  • /{version}/apps/delta

对于spring cloud eureka来说,这里的version是eureka

ApplicationResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/ApplicationResource.java

代码语言:javascript
复制
    @GET
    public Response getApplication(@PathParam("version") String version,
                                   @HeaderParam("Accept") final String acceptHeader,
                                   @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept) {
                                   //...
    } 

    @Path("{id}")
    public InstanceResource getInstanceInfo(@PathParam("id") String id) {
        return new InstanceResource(this, id, serverConfig, registry);
    }        

    @POST
    @Consumes({"application/json", "application/xml"})
    public Response addInstance(InstanceInfo info,
                                @HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication) {
                                //...
    }

这里提供三个接口

  • /{version}
  • /{id}
  • POST /

InstancesResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/InstancesResource.java

代码语言:javascript
复制
@Produces({"application/xml", "application/json"})
@Path("/{version}/instances")
public class InstancesResource {
    @GET
    @Path("{id}")
    public Response getById(@PathParam("version") String version,
                            @PathParam("id") String id) {
                            //...
    }

}

这里提供一个接口

  • /{version}/instances/{id}

StatusResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/StatusResource.java

代码语言:javascript
复制
@Path("/{version}/status")
@Produces({"application/xml", "application/json"})
public class StatusResource {
    @GET
    public StatusInfo getStatusInfo() {
        return statusUtil.getStatusInfo();
    }
    //...
}

这里提供一个借口

  • /{version}/status

VIPResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/VIPResource.java

代码语言:javascript
复制
@Path("/{version}/vips")
@Produces({"application/xml", "application/json"})
public class VIPResource extends AbstractVIPResource {
    @GET
    @Path("{vipAddress}")
    public Response statusUpdate(@PathParam("version") String version,
                                 @PathParam("vipAddress") String vipAddress,
                                 @HeaderParam("Accept") final String acceptHeader,
                                 @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept) {
        return getVipResponse(version, vipAddress, acceptHeader,
                EurekaAccept.fromString(eurekaAccept), Key.EntityType.VIP);
    }
}

这里提供一个借口

  • /{version}/vips/{vipAddress}

SecureVIPResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/SecureVIPResource.java

代码语言:javascript
复制
@Path("/{version}/svips")
@Produces({"application/xml", "application/json"})
public class SecureVIPResource extends AbstractVIPResource {
    @GET
    @Path("{svipAddress}")
    public Response statusUpdate(@PathParam("version") String version,
                                 @PathParam("svipAddress") String svipAddress,
                                 @HeaderParam("Accept") final String acceptHeader,
                                 @HeaderParam(EurekaAccept.HTTP_X_EUREKA_ACCEPT) String eurekaAccept) {
        return getVipResponse(version, svipAddress, acceptHeader,
                EurekaAccept.fromString(eurekaAccept), Key.EntityType.SVIP);
    }
}

这里提供一个借口

  • /{version}/svips/{svipAddress}

PeerReplicationResource

eureka-core-1.8.8-sources.jar!/com/netflix/eureka/resources/PeerReplicationResource.java

代码语言:javascript
复制
@Path("/{version}/peerreplication")
@Produces({"application/xml", "application/json"})
public class PeerReplicationResource {
    @Path("batch")
    @POST
    public Response batchReplication(ReplicationList replicationList) {
        //....
    }
}

这里提供一个接口

  • POST /{version}/peerreplication/batch

小结

eureka server的rest api是使用javax.ws实现的。然后spring cloud的版本,其version传的是eureka值。使用javax.ws实现的接口,感觉比起spring mvc来说,非常不好找映射,稍微有点费劲。

doc

  • Eureka REST operations
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ApplicationsResource
  • ApplicationResource
  • InstancesResource
  • StatusResource
  • VIPResource
  • SecureVIPResource
  • PeerReplicationResource
  • 小结
  • doc
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档