Rest WebService 错误处理

2023-11-29

我使用 RestWebservice 进行一些基本操作,例如创建/搜索。请求 xml 看起来像这样

<customer> 
    <name/>
  .....
 </customer>

为了成功操作,我返回相同的客户 XML,其中填充了额外的字段(例如,我们在请求中将其留空的 systemId 等)。 响应.Status=2000

对于不成功的操作,我会返回类似的内容并带有不同的错误代码。 例如 Response.Status = 422(不可处理的实体) Response.Status= 500(内部服务器错误)和其他一些..

<errors>
<error> An exception occurred while creating the customer</error>
<error> blah argument is not valid.</error>
</errors>

现在我不确定这是否是将错误发送给客户端的正确方法。也许它应该出现在响应的标头中。

我将非常感谢任何帮助。 谢谢!


针对错误的正确 REST 方法是使用 HTTP 状态代码(听起来就像您正在做的那样)。其中有一个令人眼花缭乱的数组(正如你可以在这里看到的)并且您可能会惊讶地发现有多少适合最常见的情况。

至于友好的错误消息,您有两种选择。首先,您可以在 HTTP 响应中的状态代码后面提供状态代码的文本描述(有关详细信息,请参阅有关 HTTP 的 Wikipedia 文章)。该文本由服务器(而不是 HTTP 规范)确定,并为您发送的特定消息提供了一定的灵活性;大多数服务器端框架都为您提供了一种以编程方式设置此文本的方法。然而!最佳实践是不要滥用状态代码描述,因为您无法保证用户的 Web 客户端是否会读取它(有利于仅读取状态代码并使用标准 HTTP 描述)。如果您的状态描述很简单并且您控制服务器和客户端(这样您就知道自己会得到什么),我只建议使用这种方法。根据我的经验,这种方法对于 5xx 范围的代码非常有效,但我不会将其用于其他用途。

您的第二个选择是您已经在做的事情:返回错误状态代码和错误描述作为消息正文。这是最佳实践;如果它适合您,则无需更改。将其视为“错误的附加信息”而不是错误消息本身(这将是 HTTP 响应中状态代码之后的文本)可能会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rest WebService 错误处理 的相关文章

  • 使用 mocha/chai 确保 REST API 提供文件?

    我想验证对 REST API 端点之一的调用是否正在提供文件 但我不确定如何进行操作 并且我没有看到任何相关示例 我确实看过文档 http chaijs com api bdd 但这对我没有多大帮助 服务器端代码本质上是 在 Express
  • 使用 WCF 和 .NET 4.0 在 C# 中实现 SOAP 客户端

    我在 NET 4 0 中开始使用 WCF 时遇到问题 这是我的情况 我用 PHP 创建了一个小型 SOAP 服务器 我有一个 C 项目 我想在其中连接到此服务器并启动 SOAP 通信 我的问题是 我不知道如何在 C 中执行此操作 我找不到
  • 无法从 Web 主机本身以外的任何地方连接到任何 Web 主机的 MySQL 数据库

    我有 2 个不同的虚拟主机 pagodabox 000webhost 都是免费的 并且我已经设置了localhost与MySQL 我已经在他们三个上安装了 wordpress 它们在自己的域中工作得很好 即 什么时候localhostwor
  • 泽西宁静例外

    我面对的是泽西岛 2 7 这是我的服务 package edu srv rest import javax ws rs GET import javax ws rs POST import javax ws rs Path import j
  • 使用 Swagger 的 Spring REST API 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以帮助我生成 RESTful API 文档的工具 我的服务器是用Java编写的并使用S
  • android/eclipse 中的网络服务

    我需要通过soap 方法使用android eclipse 的Web 服务 即 我必须提供输入并根据用户输入从网络服务显示适当的结果 如何做到这一点 java类 public class Demo webserviceActivity ex
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • 如何在 Jersey RESTful Web 服务中放置 cookie?

    我想通过 Jersey API 将 cookie 从 PUT webservice result 放置到 POST webservice 这是我的代码 WebResource service1 client resource http te
  • Web 服务调用后响应对象中的属性为 null

    我可以在 Fiddler 中看到该对象 但该对象在我这边没有反序列化 有没有人见过这个 响应为空 或 响应包含空值 或 请求为空 或 请求包含空值 几乎总是意味着命名空间不匹配 例如 响应可能包含
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 将 C# 中的 asmx web 服务的 Soap 请求标头从 text/xml 更改为soap/xml

    我需要调用网络服务 我生成了一个代理并调用了该方法 但它一直失败 因为 API 期望标头中包含soap xml 而 Visual Studio 中生成的代理客户端则在标头中发送文本 xml 问题 是否可以更改生成的代理客户端的 Conten
  • 如何以编程方式下载公共 Google Drive 文件?

    我有一个后端服务器 必须下载 Google 云端硬盘上的文件 该文件已由所有者向公众共享 我们的客户通过电子邮件向我们发送链接 我们从电子邮件中获取链接 不涉及 UI 该程序需要获取或下载文件并离线处理它 谷歌示例似乎是使用 UI 运行的
  • PUT/DELETE 与 REST 是自动幂等的吗?

    我正在学习 REST 和 PUT DELETE 我读到这两者 以及 GET 都是幂等的 这意味着多个请求使服务器进入相同的状态 重复的 PUT DELETE 请求是否会离开 Web 浏览器 当使用XMLHttpRequest 换句话说 服务
  • 如何使用 PATCH 更新简单的数据库字段?

    我是 php 和 API 的新手 我正在尝试学习这些方法 但我无法执行 PATCH 或 PUT 来更新我的简单 mysql 数据库 我使用了以下代码 if isset PATCH con mysqli connect localhost r
  • Laravel 5 Eloquent 在多个级别上将关系附加到 JSON

    因此 在模型中包含关系非常容易 例如 class User extends Model protected with roles class Role extends Model protected with permissions 当有对
  • java.lang.NoClassDefFoundError: javax/ws/rs/core/Configuration

    我正在实现轻松的网络服务 并且正在使用 jboss 4 0 但我遇到以下异常 java lang NoClassDefFoundError javax ws rs core Configuration 我的 web xml 是
  • 将文件和关联数据发布到 RESTful Web 服务(最好以 JSON 形式)

    在一个应用程序中 我正在开发 RESTful API 我们希望客户端以 JSON 形式发送数据 该应用程序的一部分要求客户端上传文件 通常是图像 以及有关图像的信息 我很难在单个请求中追踪这种情况是如何发生的 是否可以将文件数据 Base6
  • ReST 代理对象生成器

    第三方公司写了一套ReST服务 我已经让所有代码正常工作 但事后看来 为了消除一些跑腿工作 我认为有人可能知道一个代码生成器 它连接到 ReST 服务并计算出需要创建和生成哪些请求和响应对象这些的代码 我在谷歌上看了一下 但没有看到任何合适

随机推荐

  • 如何从 PHP 中 var_dump 的输出创建数组?

    我怎样才能解析输出var dump在 PHP 中创建数组 Use 变量导出如果你想要一个也是有效 PHP 代码的表示 a array 1 2 array a b c dump var export a true echo dump 将显示
  • AVAudioPlayer 的 NSOSStatusErrorDomain 代码=-54

    AVAudioPlayer 在某些本地 MP3 文件上出现以下错误 Error Domain NSOSStatusErrorDomain Code 54 null 我正在将 zip 文件下载到 Documents 目录 然后使用名为的库解压
  • 从 NSMutableArray 中删除 for 循环中的对象

    我正在与一个UITableView对于作为数据源的数组中的每个对象UITableView 如果它们符合某个条件我就会删除它们if陈述 我的问题是它只删除数组中的所有其他对象 Code UIImage isCkDone UIImage ima
  • 为什么 C++ 中存在从指针到 bool 的隐式类型转换?

    考虑班级foo有两个这样定义的构造函数 class foo public foo const std string filename std cout lt lt ctor 1 lt lt std endl foo const bool s
  • 如何在 Android 上将 TTS 输出保存为音频文件?

    这是我在此的头一篇博文 我是 Android 编程新手 我想创建一个应用程序 可以将文本到语音的输出保存到音频文件中到我的数据库中 我听说过合成到文件 但事实并非如此 SynthesizeToFile 应该创建一个 wav 您可以解码并发送
  • 下拉菜单 - 使

    我有点疯狂地试图实现我的客户想要的东西 我可以告诉他们这是不可能的 但我喜欢挑战 基本上 我正在尝试做一个下拉菜单 其中下拉菜单 ul or ul menu li ul 被 div 包围 有点儿 ul class menu li a hre
  • Django get_object_or_404() 与 DateTimeField

    我现在正在读 Django by Example 一书 我在使用参数查找记录时遇到问题 我的代码如下所示 设置 py TIME ZONE Asia Seoul 模型 py published models DateTimeField def
  • 关闭所有打开视图控制器的单一函数

    我有一个应用程序 它是单视图应用程序 我有一个导航控制器链接到根视图控制器的所有子控制器 在每个子控制器中 我都有一个注销按钮 我想知道是否可以有一个可以调用的函数 该函数将关闭一路上打开的所有控制器 无论用户按下注销时当前打开哪个控制器
  • 如何从 Python 集合中随机选择 2 个项目? [复制]

    这个问题在这里已经有答案了 我目前有一个 n 大小的 Python 集 其中 n gt 0 是否有一个快速的 1 或 2 行 Python 解决方案可以做到这一点 例如 该集合将如下所示 fruits set apple orange wa
  • Java 线程中的“阻塞计数”和“等待计数”是什么意思?

    我使用 JConsole 来观看线程 它显示 name Thread 6 state BLOCKED sun misc Launcher AppClassLoader 19821f owner Thread 3 blocked Count
  • 由于“拒绝连接”,我无法使用 MySQL

    我正在尝试在 Windows XP 上运行 MySQL 的免安装版本 位于C mysql 在我的机器上 当我尝试连接到 MySQL 时 我在 PHP 文件中收到错误消息 无法连接 无法连接 因为目标机器主动拒绝 我已经编辑了配置文件my i
  • 未定义的属性: Illuminate\Database\Eloquent\Collection:: Laravel 5.2

    我试图让物联网显示订单中的商品 但我不断收到此错误 这些是我的模型 class westcoorder extends Model protected table westcoorders protected with westcoorde
  • 如何将线程函数的地址作为回调传递给winapi?

    我有一个简单的线程 在执行过程中我尝试使用线程中定义的函数之一的地址调用 EnumWindows 所以我试图这样做 EnumWindows cbEnumWindowsClickOK 0 其中 cbEnumWindowsClickOK 是在线
  • iOS 如何重新启动应用程序以更改语言 Swift 4

    我使用多语言应用程序 我想在配置文件用户中手动更改语言 我已经有 Localization string 如果我更改设备语言 应用程序中的语言将更改为 但我想从用户配置文件示例中手动更改语言 为此 我使用下一个代码 private func
  • 函数返回不可变引用,但借用检查器认为不然

    在这里 我将一些可变引用传递到函数中以对这些引用执行某些操作 然后 我通过将这些可变引用转变为不可变引用来删除它们 然而 Rust 借用检查器似乎仍然认为它们是可变的 这是代码 src lib rs fn append 1 to all s
  • XNA 中非常简单的菜单 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我和其他一些人正在创建一个游戏 我想添加一个非常简单的菜单 只有 开始 和 退出游戏 现在我已经下载了游戏状态管理示例 但这是一个非常长且复杂的代码
  • Py2exe ImportError:没有名为 shell 的模块

    我的代码是 from win32com shell import shellcon from win32com shell shell import ShellExecuteEx 它在 IDLE 中工作正常 但在我生成 exe 后出现错误
  • pip 配置了需要 TLS/SSL 的位置,但是 Python 中的 ssl 模块不可用

    我正在使用Python 3 6 当我尝试使用安装 模块 时pip3 我面临这个问题 pip is configured with locations that require TLS SSL however the ssl module i
  • 如何制作动画信使

    我想创建一个信使组件 当调用该函数时 它将创建一条消息 并且在按下或通过计时器时 首先使其透明 gt 之后 平滑地降低包装器的高度 gt 并且过渡结束后 删除对象 我怎样才能做到这一点 我的代码无法正常工作
  • Rest WebService 错误处理

    我使用 RestWebservice 进行一些基本操作 例如创建 搜索 请求 xml 看起来像这样