json - REST API 中的验证错误响应

标签 json rest api error-handling

我正在设计一个 RESTful API,想知道验证错误消息的最佳格式是什么。

例如,我的帐户创建端点接受一个 JSON 对象:

user: {
  first_name: string,
  last_name: string,
  address: {
    street: string,
    city: string,
    zip_code: string
  }
}

我的回复将采用以下格式:

{
    code: 400,  // HTTP code
    message: "Validation failed",  // general message
    type: "validation_failed",  // there are other types of errors as well
    errors: WHAT_DO_I_SHOW_HERE
}

我有几种验证错误消息的选择:

格式一

errors: {
  last_name: "First name is required",
  address: {
    zip_code: "ZIP code is invalid"
  }
}

或者像格式 2 一样将错误压平

errors: {
  last_name: "First name is required",
  "address.city": "City is required",
  "address.zip_code": "ZIP code is invalid"
}

或者使用数组,其中每个元素可以有字段名、错误代码、错误信息、嵌套错误等。

errors: [
  {
    field: "first_name",
    message: "First name is required",
  },
  {
    field: "address",
    errors: [
      {
        field: "zip_code",
        message: "ZIP code is invalid"
      }
    ]
  }
]

errors: [
  {
    field: "first_name",
    message: "First name is required",
  },
  {
    field: "address.zip_code",
    message: "ZIP code is invalid"
  }
]

显然数组格式更灵活,因为字段名是可选的,所以它可以容纳与多个字段组合相关的错误(例如,时间间隔的结束时间必须在开始时间之后)。但我的问题是,API 用户使用哪个更容易?

最佳答案

对于在前端 html 工作的我来说,我更愿意将错误格式 2 扁平化。这对我来说很容易查看它,或者很容易定位要显示的错误。

乐于倾听他人的意见

关于json - REST API 中的验证错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759906/

相关文章:

iphone - 在 iPhone 上使用 AMF 而不是 JSON? (对于网络服务)

python - 如何使用 python mechanize 发送有效负载

ios - 如何在不关闭并重新加载应用程序的情况下获取新的 JSON 响应

rest - 在 Tomcat 上使用 RESTeasy

python - 如何使用 Uber API 的个人访问 token ? (获取 'No authentication provided.' )

javascript - 在javascript中从json数组访问数字对象

android - 为什么不在android应用中打开weather map api返回数据?

javascript - Ooyala 播放器事件 - 当播放器到达视频的特定点时发出通知

python - 如何使用Python获取UN Comtrade数据?

ios - XCode: 'pod init' ruby​​ json "incompatible library version"错误失败