我可以向 vnd.error 添加其他字段吗?
Can I add additional fields to vnd.error?
在 Spring HATEOAS 中,您可以 return 一个 VndError
对象,如下所示:
[
{
"logref" : "some request id",
"message" : "your request was incorrect."
}
]
mime type specification提到了一些可选和必填的字段,但没有谈到添加额外的字段。
如果我将 vnd.error
有效负载扩展为如下所示:
[
{
"logref" : "some request id",
"message" : "your request was incorrect.",
"additional" : {
"some" : "additional",
"payload" : "fields"
}
}
]
根据规范格式是否仍然有效?
没有提到 xsd:any
的等效项(已记录 here)。即似乎没有办法扩展架构。如果它只是您控制的一个客户端,那么您可以 'fork' 架构并添加客户端将知道存在的其他内容。但是,如果任何客户端可以访问它并且期望 vnd.error
,这是它在看到 application/vnd.error+json
时所期望的,并且如果它不忽略其解析器中的未知属性,则它可能无法解析并且不会甚至得到错误。
此外,如果客户不关心错误但想要 Retry-After
header,那么请求将包含不需要的内容。
你能不能创建一个新的端点 /logref/
?客户端可以发送 vnd.error
logRef
并获取更多信息,您可以发送任何您需要的信息,因为它不会是 vnd.error
响应。
最终,logRef 用于服务器端。任何客户端都只对向其用户和 logRef 显示消息感兴趣,如果他们希望跟进错误,但我怀疑 ThreadLocal 错误可能对客户端没有任何意义。 logRef 指向的内容只对服务器有意义。
确实,通过 ThreadLocal 错误向客户端公开实现细节可能是一个安全问题。内部服务器错误应该足够详细,以便服务器开发人员修复问题,而详细依赖于客户端看不到这些错误,这些错误可能包含敏感的实现细节。
在 Spring HATEOAS 中,您可以 return 一个 VndError
对象,如下所示:
[
{
"logref" : "some request id",
"message" : "your request was incorrect."
}
]
mime type specification提到了一些可选和必填的字段,但没有谈到添加额外的字段。
如果我将 vnd.error
有效负载扩展为如下所示:
[
{
"logref" : "some request id",
"message" : "your request was incorrect.",
"additional" : {
"some" : "additional",
"payload" : "fields"
}
}
]
根据规范格式是否仍然有效?
没有提到 xsd:any
的等效项(已记录 here)。即似乎没有办法扩展架构。如果它只是您控制的一个客户端,那么您可以 'fork' 架构并添加客户端将知道存在的其他内容。但是,如果任何客户端可以访问它并且期望 vnd.error
,这是它在看到 application/vnd.error+json
时所期望的,并且如果它不忽略其解析器中的未知属性,则它可能无法解析并且不会甚至得到错误。
此外,如果客户不关心错误但想要 Retry-After
header,那么请求将包含不需要的内容。
你能不能创建一个新的端点 /logref/
?客户端可以发送 vnd.error
logRef
并获取更多信息,您可以发送任何您需要的信息,因为它不会是 vnd.error
响应。
最终,logRef 用于服务器端。任何客户端都只对向其用户和 logRef 显示消息感兴趣,如果他们希望跟进错误,但我怀疑 ThreadLocal 错误可能对客户端没有任何意义。 logRef 指向的内容只对服务器有意义。
确实,通过 ThreadLocal 错误向客户端公开实现细节可能是一个安全问题。内部服务器错误应该足够详细,以便服务器开发人员修复问题,而详细依赖于客户端看不到这些错误,这些错误可能包含敏感的实现细节。