Rest 我可以向vnd.error添加其他字段吗?
在Spring HATEOAS中,可以返回如下所示的VndError对象:Rest 我可以向vnd.error添加其他字段吗?,rest,spring-hateoas,hateoas,Rest,Spring Hateoas,Hateoas,在Spring HATEOAS中,可以返回如下所示的VndError对象: [ { "logref" : "some request id", "message" : "your request was incorrect." } ] [ { "logref" : "some request id", "message" : "your request was incorrect.", "additional" : { "some
[
{
"logref" : "some request id",
"message" : "your request was incorrect."
}
]
[
{
"logref" : "some request id",
"message" : "your request was incorrect.",
"additional" : {
"some" : "additional",
"payload" : "fields"
}
}
]
中提到了一些可选字段和必填字段,但没有提到添加其他字段
如果要将vnd.error有效负载扩展为如下所示:
[
{
"logref" : "some request id",
"message" : "your request was incorrect."
}
]
[
{
"logref" : "some request id",
"message" : "your request was incorrect.",
"additional" : {
"some" : "additional",
"payload" : "fields"
}
}
]
根据规范,格式仍然有效吗?没有提到xsd的等价物:任何文档。i、 e.似乎没有扩展模式的方法。如果您只控制一个客户机,那么您可以“分叉”模式,并添加客户机知道存在的其他内容。但是,如果任何客户机都可以访问它,并且希望看到一个vnd.error,这就是它在看到application/vnd.error+json时所期望的,如果它不忽略解析器中的未知属性,它可能无法解析,甚至无法获得错误 另外,如果客户机不关心错误,而是希望在头之后重试,那么请求将包含不需要的内容 您可以创建一个新的端点/logref/maybe吗?客户机可以发送vnd.error logRef并获取更多信息,您可以将需要的任何信息发送回其中,因为这不是vnd.error响应 最后,logRef用于服务器端。任何客户端都只对向其用户和logRef显示消息感兴趣,如果他们希望跟踪错误,但我怀疑ThreadLocal错误可能对客户端没有任何意义。logRef指向的内容仅对服务器有意义
实际上,通过ThreadLocal错误向客户机公开实现细节可能是一个安全问题。内部服务器错误应该足够详细,以便服务器开发人员修复问题,而详细则依赖于客户端没有看到这些错误,这些错误可能包含敏感的实现细节。规范不允许您执行的其他字段会做什么?添加有关异常的更多信息。logref字段允许一个唯一的请求ID,但我们也可以附加一个更复杂的诊断对象。谢谢,我确实想知道解析器是否能够处理这些添加。添加一个新的端点意味着我们必须存储diagnostics对象,而diagnostics对象仅仅是ThreadLocal的短暂信息