这方面的最佳实践是什么。NET与Web API?特别是WebRESTAPI。当异常发生时,RESTAPI是否应该在响应体中返回异常?
当然,我会返回500或类似的HTTP状态。但是当我用这个错误代码响应时,最佳实践是什么?或者更好的是,规范或RESTAPI对此有何规定?
无论如何是的,您应该在响应的主体中包含异常的表示。异常将是错误的最佳解释,它将是帮助用户纠正错误的最有帮助的。我建议所有错误的响应代码为400,但是400范围内的任何数字都是可以接受的。
我做了一些研究,发现最常见的/标准使用这种形式的JSON结构:
{
"error": {
"code": "400",
"message": "main error message here",
"target": "approx what the error came from",
"details": [
{
"code": "23-098a",
"message": "Disk drive has frozen up again. It needs to be replaced",
"target": "not sure what the target is"
}
],
"innererror": {
"trace": [ ... ],
"context": [ ... ]
}
}
}
其中很多都是可选的,但如果您需要它们,它们是可以选择的。关于这个结构,重要的一点是错误是在成员“error”下的对象中描述的。
这是OASIS数据标准OASIS OData提出的格式,似乎是最标准的选择,但是在这一点上似乎没有任何标准的高采用率。
细节在我关于JSON REST API错误处理的博客文章中讨论过
我有这个建议。
>
返回的错误需要具有相同的JSON格式,如下所示:
{
code: 12321312,
message: "A fatal error occurred",
details: "An unexpected information was passed as parameter to the API."
}
错误格式需要提供信息。当您在过滤器中获得错误时,您可以使用生成的代码(错误代码,如UUID)将错误保存在数据库中,并在JSON中返回code
。为了有一个好的API,使用错误代码将是一个很好的特性,并将帮助您识别问题。
返回异常(我所做的)-
返回空的反应体?-
返回一个空的默认JSON对象?-
别的东西?-
问题内容: 我做了异步。现在我可以使用了。 这是示例代码: 所以这里的问题是回报承诺,因为我可以使用它吗? 编辑 当我等待时,它将按顺序运行;当我删除等待时,它将运行? 问题答案: 通常不与promises一起使用,因为很少有这种需求。如果在状态更新()之后调用的方法依赖于更新的状态(),则它可以通过其他方式(例如,作为参数)访问它。 使用回调并且不返回承诺。由于很少需要这样做,因此创建未使用的承
我目前正在一个后端有Spring,前端有Angularjs的网站上工作,我们已经讨论了后端响应以处理前端的消息对话框,我有一个问题要问: 假设我有一个API: 若客户机发出一个带有无效参数(如字符串)的请求,那个么应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文包含消息“fromTime和toTime应采用时间戳格式”,还是HTTP 200包含相同的消息? 我看到了一些Googl
使用Guzzle,我正在使用JSON格式的一些外部API,通常我获取数据 $data = $request- 但是我无法从这个不同的api中获取数据。数据似乎没有出现在“响应体”中。 这个api调用有效:https://i.ibb.co/80Yk6dx/Screenshot-2.png 这不起作用:https://i.ibb.co/C239ghy/Screenshot-3.png
我正在尝试调用FlickR API,但由于response.body()返回null而遇到困难。 我不确定它是否与我的JSON/POJO映射相关,但我无法弄清楚当我调用Flickr时如何访问来自改版的响应。我知道我的调用已经成功完成,因为我实际上能够通过日志拦截器查看JSON。 型号: 活动 }
我使用的是Spring版本4(Spring data),我想将Object作为JSON返回,我想知道以下代码即使不使用xmlRootElement注释用户类也能工作: 任何机构都可以解释吗?当我需要注释要返回为JSON的对象类时,响应体/响应实体是否自己完成工作?
问题内容: 就像一个人在这里问到但他的解决方案是调用其他函数 …我想知道是否有可能拥有一个不调用a的函数第二个功能基于异步请求的响应,但仅当异步请求响应时。 可能是这样的: 不调用另一个函数,这有可能吗? 我要实现的目标是拥有一个可以用一些参数调用的函数,该函数将返回异步Web服务(如FB)的响应。 问题答案: 简而言之,没有。您不能让异步函数同步返回有意义的值,因为该值当时不存在(因为它是在后台