RESTAPI应该返回UI友好的错误消息吗?

RESTAPI应该返回UI友好的错误消息吗?,rest,error-messaging,Rest,Error Messaging,今天我和我的一位同事讨论了RESTAPI模式,本例中的消费者将是一个移动应用程序(android和iOS)。在讨论过程中,我的同事提出了一个请求,即API应返回一条移动用户友好的错误消息,并提供多语言支持 以下是我的建议 对于后端中的错误,例如400 { "errors":[ { "username": "Invalid username", "code": 453 }

今天我和我的一位同事讨论了RESTAPI模式,本例中的消费者将是一个移动应用程序(android和iOS)。在讨论过程中,我的同事提出了一个请求,即API应返回一条移动用户友好的错误消息,并提供多语言支持

以下是我的建议

对于后端中的错误,例如400

{
  "errors":[
    {

      "username": "Invalid username",
      "code": 453
    }
  ]
}
他建议返回一条更人性化/应用程序友好的错误消息,并提供多语言支持:

{
  "errors":[
    {

      "username": "Entered username is incorrect, please try again",
      "code": 453
    }
  ]
}
现在我的观点是,这将使RESTAPI与移动应用紧密耦合。理想情况下,翻译和可读错误消息需要在移动应用程序本身中处理


经过反复讨论,我想向开发人员社区询问这个问题,关于这个问题应该采取什么方法?

我认为每个api都应该提供合理的、格式良好的错误消息。另一种选择是,在出现错误时进行多次检查

我见过一些地方,他们用数字作为各种错误的代码。然后,前端必须在每次发出返回错误的请求时进行检查。这将导致在多个应用程序中实现类似的逻辑,这些应用程序都与同一端点通信

至于声称后端与消费者紧密耦合

{
  "errors":[
    {

      "username": "Entered username is incorrect",
      "code": 453
    }
  ]
}

更好,而且不会与任何消费者捆绑在一起。

我认为每个api都应该提供合理的、格式良好的错误消息。另一种选择是,在出现错误时进行多次检查

我见过一些地方,他们用数字作为各种错误的代码。然后,前端必须在每次发出返回错误的请求时进行检查。这将导致在多个应用程序中实现类似的逻辑,这些应用程序都与同一端点通信

至于声称后端与消费者紧密耦合

{
  "errors":[
    {

      "username": "Entered username is incorrect",
      "code": 453
    }
  ]
}

更好,而且不会与任何消费者捆绑在一起。

考虑一下,您的API有一天可能会被使用常规web浏览器的人调用。在这种情况下,您希望消息是什么?在这种情况下,是的,API的其他使用者可能会有不同的错误消息。将错误消息集中在后端的不同语言中会减少维护。如果每个客户端应用程序都必须这样做,那么工作就更多了。检查一下WiReC.DEV是否可以和你的休息API一起玩。想想你的API有一天会被某个普通的浏览器所调用。在这种情况下,您希望消息是什么?在这种情况下,是的,API的其他使用者可能会有不同的错误消息。将错误消息集中在后端的不同语言中会减少维护。如果每个客户端应用程序都必须这样做,那么工作就更多了。查看wirespec.dev以使用RESTAPI。