问题
我们正在构建一个对服务采用 RESTful 方法的 SOA。一旦系统投入生产,我们将有许多客户使用该接口,包括内部和第三方系统。
我们希望能够在客户端应用程序提供的响应信息中消费和回显,例如:-
- 会话 ID - 可以是 Java EE 会话 ID 或任何特定于客户端的内容,这对于支持团队和调试客户端问题以在我们所有的系统中跟踪它们很有用。
- Transaction Id - 请求的唯一标识符,如果客户端异步调用服务或我们实现 202 Accepted 样式的长时间运行流程,我们可以将其回显给客户端以帮助客户端进行请求/响应关联。
潜在的解决方案
因此,坚持 RESTful 约束意味着我们需要利用 HTTP 来实现这一点,并且我们可以实现几个选项。
- Pragma header - 为 transaction-id、session-id 等实现 extension-pragmas。这似乎是纯粹的解决方案,因为它使用了标准的 HTTP 标头,尽管我担心它会成为我们无法打扰的所有东西的倾销场好好想想。
- X-My-Header - 我们需要的每个字段的自定义标题。可能被代理剥离,而不是核心 HTTP,所以感觉反休息
- 在查询字符串或 XML/JSON 表示中 - 将字段添加到我们的所有资源中。因为它是一个操作参数,所以感觉它应该作为元数据而不是资源提供。
- Cookies - 使用 Cookie 和 Set-Cookie 来保存自定义键值;在会话 id 的情况下很有用,因为大多数实现已经使用 cookie。每次都必须重新发送以支持客户端相关性,这会破坏使用 cookie 的意义。
答案
这有什么先例吗?我们疯了吗?在我的所有研究中,我是否缺少明显的东西?没有人真正关心部署后他们将如何支持他们的服务吗?我应该闭嘴走开吗?
我希望有人能帮忙。
PS对不起,如果这是一篇文章,建议确实说“具体”....