【发布时间】:2014-03-18 07:17:11
【问题描述】:
我有一项服务支持多种操作 A、B 和 C。
每个操作都有不同的参数。我的架构师希望我使用以下 URL 为每个操作实现这些操作:
http://<server>:<port>/application/service?q=A&<query_paramers>
http://<server>:<port>/application/service?q=B&<query_paramers>
http://<server>:<port>/application/service?q=C&<query_paramers>
即他希望我接受操作名称作为查询参数,而不是作为路径参数。
现在的问题是每个操作都有相同的基本 URL,即
http://<server>:<port>/application/service
根据我的理解,如果我需要支持这种格式,那么在我的服务中,它将作为资源公开的单个方法,在该方法中基于“q”的值,我将决定调用哪个操作.
虽然它看起来会起作用,但我对这种方法没有什么顾虑
将公开代表所有三个操作的单个资源,这对我来说看起来不正确。我不确定这方面的行业标准,但我认为资源和应用程序操作/行为之间应该存在一对一的映射关系。
-
单个资源将接受所有操作的参数,这意味着语法将包含单个资源下列出的所有参数,用户将无法找出哪个参数属于哪个操作。
在单个方法中接受 3 个操作的所有参数的一种解决方法是,我的方法采用单个 @Context UriContext 参数,但在这种情况下,我的语法将不列出任何参数,这又是错误的用户将不会获得有关每个操作的可能参数的任何信息。
提前致谢。
【问题讨论】:
标签: java web-services rest jakarta-ee jax-rs