REST API 4xx/5xx响应的详细级别

REST API 4xx/5xx响应的详细级别,rest,http,Rest,Http,我很好奇,提供4xx/5xx错误响应的最常见方式是什么 通常我会尝试在一些地方放置显式错误响应,这可能看起来像: // 400 bad request { "errorCode": 100, "message": "user-friendly message with info what happened" } // 400 bad request // Header: CorrelationID=123abc (empty response body) 从我的观点来看,这将提高AP

我很好奇,提供4xx/5xx错误响应的最常见方式是什么

通常我会尝试在一些地方放置显式错误响应,这可能看起来像:

// 400 bad request
{
  "errorCode": 100,
  "message": "user-friendly message with info what happened"
}
// 400 bad request
// Header: CorrelationID=123abc
(empty response body)
从我的观点来看,这将提高API的实现速度,因为您不需要查看文档、发送电子邮件等:)API将指导您并告诉您出了什么问题

但我的一个朋友告诉我,他通常返回空的正文、一些http状态码(400、404等)和标头中的“RequestID”(用于调试目的)。因此,他典型的错误响应如下所示:

// 400 bad request
{
  "errorCode": 100,
  "message": "user-friendly message with info what happened"
}
// 400 bad request
// Header: CorrelationID=123abc
(empty response body)
我也对这个问题进行了一些调查,发现了一篇关于“”的好文章。在那里,我发现甚至有一个RESTAPI错误处理的标准-

基于此,我有几个问题:

  • 您是否使用RFC 7807进行错误响应
  • 您的错误响应有多详细

  • 我们广泛使用
    application/problem+json
    ,而且它很可爱。我们的基本错误通常只有一条消息和一个类型,但如果它对开发人员有用,我们会添加更多信息

    最好包含一个链接来包含有关错误的更多信息,如果是验证错误,我们通常会包含有关哪个字段失败的信息

    一般来说,我会说:越多越好。如果您的API用户有大量信息需要继续解决他们的错误,那将是一次极好的开发人员体验


    您的朋友没有做“错误的事情”,但可能不是最好的事情。

    我们广泛使用
    application/problem+json
    ,这很可爱。我们的基本错误通常只有一条消息和一个类型,但如果它对开发人员有用,我们会添加更多信息

    最好包含一个链接来包含有关错误的更多信息,如果是验证错误,我们通常会包含有关哪个字段失败的信息

    一般来说,我会说:越多越好。如果您的API用户有大量信息需要继续解决他们的错误,那将是一次极好的开发人员体验

    你的朋友没有做“错事”,但可能不是最好的事情