博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊聊Eureka Server的REST API
阅读量:6574 次
发布时间:2019-06-24

本文共 5533 字,大约阅读时间需要 18 分钟。

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

ApplicationsResource

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

@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

@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

@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

@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

@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

@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

@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

转载地址:http://kogjo.baihongyu.com/

你可能感兴趣的文章
[Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688
查看>>
【Android视图效果】分组列表实现吸顶效果
查看>>
多文件上传示例源码(默认支持各种类型,包括图片)
查看>>
命令行基本操作学习笔记(一)
查看>>
「试着读读 Vue 源代码」工程目录及本地运行(断点调试)
查看>>
A Visual Git Reference
查看>>
Tomcat 关于表单提交数据量过大导致数据丢失的问题
查看>>
金融数据库
查看>>
翻了100个程序员的朋友圈, 发现个个都是套路王
查看>>
为什么 ++[[]][+[]]+[+[]] = 10?
查看>>
ContentProvider
查看>>
Android 自定义GridView网格布局
查看>>
基于 jQuery & CSS3 实现智能提示输入框光标位置
查看>>
我的友情链接
查看>>
ThreadLocal分析
查看>>
mysql优化:连接数
查看>>
PHP 时间操作 / 跳转问题
查看>>
Windows 2012 R2 FSMO角色相关小记录
查看>>
(小蚂蚁站长吧)网站优化做好这八步你就是seo第一
查看>>
使用流的方式往页面前台输出图片
查看>>