Java RESTAPI服务上下文和资源url
我们在应用服务器上运行多个服务,每个服务都有一个上下文。服务的名称将自动添加到url,因为同一应用程序服务器上可以有多个服务。Java RESTAPI服务上下文和资源url,java,rest,jersey,jax-rs,microservices,Java,Rest,Jersey,Jax Rs,Microservices,我们在应用服务器上运行多个服务,每个服务都有一个上下文。服务的名称将自动添加到url,因为同一应用程序服务器上可以有多个服务。 现在我们正在创建一个名为Draws的新服务,这意味着url将是 但是,现在讨论的是该服务的api路径(资源)。既然我们得到了平局,在我看来这应该是平局。 这意味着它将具有url {gameNo} 2次画图-思考? 这里有这样的想法,即服务只有抽奖,因此抽奖{gameNo}就足够了。 但在我看来,draws资源是服务的api接口,就像draws是图书馆里的书,draws
现在我们正在创建一个名为Draws的新服务,这意味着url将是 但是,现在讨论的是该服务的api路径(资源)。既然我们得到了平局,在我看来这应该是平局。 这意味着它将具有url {gameNo} 2次画图-思考? 这里有这样的想法,即服务只有抽奖,因此抽奖{gameNo}就足够了。
但在我看来,draws资源是服务的api接口,就像draws是图书馆里的书,draws是一章。。。而且应该可以在书中增加更多的章节 然后,为了实现,我们使用了Jersey。这意味着我们将有一个带有@Path({gameNo})的资源 编辑1:
我们的服务前面有网关,因此上下文永远不会向最终用户公开,它只是指向特定的服务。由于多个服务可以在同一主机上运行:端口 编辑2:
url的上下文部分是服务发现查找的一部分 编辑3:
我们实际上不是在url中进行版本控制,而是在Accept header中进行版本控制,因此实际上我的url与clementinos相同,但url的版本部分不会让您的头脑混乱于书籍、图书馆或章节。只看你的实体:“绘制”是你的实体吗?那么它应该是
http://url:port/draws/{gameNo}
对于Rest API设计,您可以阅读以下参考资料:
我也喜欢。(过去他们建议我们阅读代码以提高我们的才能,现在您也可以阅读rest API。)如果您设计绘图服务,您的url应该是: {gameNo} 如果您计划用其他端点扩展服务,那么您可能正在设计更通用的东西。如果是这种情况,请相应地命名 无论如何,你都不应该画画 此外,我建议使用小写和https(如果可以的话)
最近,我发布了一篇关于设计RESTful API时最常出现的问题的摘要,这可能会有所帮助。我会避免使用2x“draws” 下面是一种设计URI结构的可能方法。 请注意,段应该是小写的(所以不要使用“Draws”)
://[:]////
- 方案(如http)
- 主机是完全限定的主机名,是一个DNS别名,用于隐藏设备和API实现的物理位置。当环境是非生产性环境(test,int)时,它包含有关该环境的信息
- 端口应该是默认的http端口(80),因此可以省略。其他端口可用于非生产性环境
- api路径将REST api与服务器提供的其他资源(例如webapp)分开。它通常采用/api的形式。对于只提供RESTAPI的服务器,可以省略它
- api名称在一种包中收集一组资源。这是发布和版本控制的单元
- api版本是api的版本。其格式为v[主要版本号]
- 资源路径由资源URI段组成
Draws
两次?它是在内部公开的,永远不要给最终用户。那么,为什么不更改上下文名称以避免绘制两次?我的意思是,服务和项目的名称是Draws。上下文是由应用服务器添加的服务的名称。所有服务不能位于同一个基本url上。您的外部用户将看到哪个url?
<scheme>://<host>[:<port>]/<api-path>/<api-name>/<api-version>/<resource-path>