3rd party API 返回 500 错误,我的 API 应该返回什么代码

2024-06-19

我在基于 ZF2 (Zend Framework 2) 的框架中编写了一个 API,称为 Apigility。

我的服务可以查询第 3 方 API。偶尔,我会收到 500 错误消息.. 要么是由于令牌过期,要么是其他原因。

我的 API 应如何响应我的客户端?

我一开始以为我应该返回500,但实际上这似乎是错误的。我不想返回一个错误来表明我已经崩溃了..这是第 3 方拥有 500'd。

更新:以下是我从第三方看到的内容。

我想我喜欢这个主意503 Service unavailable.. 带有错误消息,提示用户出了什么问题以及如何修复它。

显示第 3 方响应的更新:

Error performing request to OAuth Provider. 
HTTP/1.1 500 Internal Server Error
Server: nginx/1.1.19
Date: Fri, 22 Aug 2014 20:24:40 GMT
Content-Type: text/html
Content-Length: 20
Connection: close
X-Powered-By: PHP/5.3.10-1ubuntu3.1
Set-Cookie: lang_select_language=en; Expires=Sun, 21-Aug-2016 20:24:42 GMT; Path=/
X-WI-SRV: FR-EQX-WEB-03
Vary: Accept-Encoding
Content-Encoding: gzip

想法?

/**
 * Status titles for common problems
 *
 * @var array
 */
protected $problemStatusTitles = array(
    // CLIENT ERROR
    400 => 'Bad Request',
    401 => 'Unauthorized',
    402 => 'Payment Required',
    403 => 'Forbidden',
    404 => 'Not Found',
    405 => 'Method Not Allowed',
    406 => 'Not Acceptable',
    407 => 'Proxy Authentication Required',
    408 => 'Request Time-out',
    409 => 'Conflict',
    410 => 'Gone',
    411 => 'Length Required',
    412 => 'Precondition Failed',
    413 => 'Request Entity Too Large',
    414 => 'Request-URI Too Large',
    415 => 'Unsupported Media Type',
    416 => 'Requested range not satisfiable',
    417 => 'Expectation Failed',
    418 => 'I\'m a teapot',
    422 => 'Unprocessable Entity',
    423 => 'Locked',
    424 => 'Failed Dependency',
    425 => 'Unordered Collection',
    426 => 'Upgrade Required',
    428 => 'Precondition Required',
    429 => 'Too Many Requests',
    431 => 'Request Header Fields Too Large',
    // SERVER ERROR
    500 => 'Internal Server Error',
    501 => 'Not Implemented',
    502 => 'Bad Gateway',
    503 => 'Service Unavailable',
    504 => 'Gateway Time-out',
    505 => 'HTTP Version not supported',
    506 => 'Variant Also Negotiates',
    507 => 'Insufficient Storage',
    508 => 'Loop Detected',
    511 => 'Network Authentication Required',
);

好吧,我认为这取决于您将使用哪个错误代码。但如果你的API的实际功能依赖于第三方API,我会考虑使用HTTP代码503 Service Unavailable,因为在第三方 API 工作之前,无论第三方 API 返回什么 HTTP 代码,您的服务都将不可用。我还会在响应负载中包含一些详细信息(错误消息)。

或者您可以返回 HTTP 代码200 OK并发送自定义错误代码和消息作为响应负载,当然,因为对 API 的 HTTP 请求实际上是成功的。但我更愿意使用 HTTP 代码来指示 API 端点的状态。

仅当您的 API 充当代理且没有任何附加功能时,我才会将 HTTP 代码从第三方 API 镜像到用户。

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

3rd party API 返回 500 错误,我的 API 应该返回什么代码 的相关文章

  • RESTful API:仅用于验证的方法/标头组合

    我希望我的 API 有一个仅验证请求 例如 如果我有一个 URL 例如 http api somesite com users 12345 用户正在客户端上填写一份信息表单 我最终会将其修补 放置 发布到该资源 当用户填写表单时 我可能希望
  • 使用 Post 以 REST 方式更新值

    我对 REST 很陌生 所以如果这是一个愚蠢的问题 请原谅我 这样 我就有了客户资源 一个客户有很多信用 所以 我想获取客户积分的 URL 是 客户 21 积分 其中 21 是客户 ID 现在 如果我没有全额积分 如何添加积分 例如 客户有
  • 为什么“FormDataMultiPart”类型参数被区别对待

    我正在编写一个小网络应用程序 将文件上传到网络服务器 我一切正常 但令我感到困惑的是 几乎所有从客户端 浏览器 发送的参数都必须在服务器端注入单词 FormDataParam except FormDataMultiPart类型参数 有人可
  • 外部依赖错误的 HTTP 状态代码

    当服务器与外部 API 通信出现问题时 返回的正确 HTTP 状态代码是什么 假设客户端向我的服务器 A 发送有效请求 然后 A 查询服务器 B 的 API 以便执行某些操作 然而 B 的 API 当前抛出 500 错误或因某种原因无法访问
  • Spring Boot 应用程序中的 Vaadin 23 Rest-API 和 UI

    我使用 Vaadin 23 3 5 开发了一个小型应用程序 到目前为止 我仅将 Spring Boot Security 与默认的 LoginView 结合使用来进行身份验证 然后使用 MainLayout 来浏览我的应用程序 但现在我需要
  • 如何获取数组作为 GraphQL 解析器的输入

    我想得到一个字符串数组ids查询变量中的参数并在我的解析器中使用它 下面是我的代码 People resolver ts import Resolver Query Mutation Args from nestjs graphql imp
  • REST 将多个输入传递给 GET 方法

    我在 RAD 中部署了一个简单的基于 REST 的应用程序 使用以下方式访问简单的 URLhttp localhost
  • Android REST API 连接

    我有点傻 对此感到抱歉 我编写了一个 API 它返回一些 JSON 我的目标是从 Android 应用程序使用此 API 我已经尝试过使用 AsyncTask 但失败了 我想像这样使用它 调用该类 告知 URL 和结果的类型 哪个json
  • 通过 PayPal REST API 示例获得折扣?

    PayPal GURUS 我需要帮助 如何插入折扣 我使用 REST API 可能是某个 可以显示代码示例吗 有什么方法可以使用 PHP REST API 发送折扣金额吗 目前 REST 支付 API 不支持折扣 您最好的选择是计算您端的折
  • 这是 Box API v2 获取事件时的错误吗

    使用 BOX API v2 从 Box 获取事件时 我发现了一个奇怪的行为 我得到的场景如下 使用 box API v1 将 14 个文件上传到 box net 使用stream position now 获取事件 这给出了流位置 例如12
  • 每个线程具有不同参数的 JMeter 测试计划

    我需要使用 JMeter 测试网络服务 我已经使用线程组 500 创建了测试计划 我需要为每个线程传递新的参数值 我听说过 CSV 数据集配置 但它不允许我想要的 因为如果我设置 共享模式 所有线程 那么每个线程将尝试从文件的每一行读取 我
  • 3rd party API 返回 500 错误,我的 API 应该返回什么代码

    我在基于 ZF2 Zend Framework 2 的框架中编写了一个 API 称为 Apigility 我的服务可以查询第 3 方 API 偶尔 我会收到 500 错误消息 要么是由于令牌过期 要么是其他原因 我的 API 应如何响应我的
  • 如何为 cxf jax-rs 2.0 客户端注册 jackson json 提供程序?

    我有一个 JAX RS 客户端正在发出一个简单的 GET 请求 我使用 CXF 实现和 Spring 进行 DI 呼叫成功 我收到响应代码 200 但是在将响应读入 POJO 时出现错误 例外 2015 05 08 16 11 55 457
  • 如何从客户端的 javax.ws.rs 实体获取纯 XML

    我有一个REST客户端创建一个XML实体通过Entity entity myObject MediaType APPLICATION XML TYPE 之后我打电话webTarget request buildPost 如何获取请求正文XM
  • 将 HTTP GET 请求中的 JSON 数据从 JAVA 代码发送到 REST API

    我正在向我的 API 成功发出以下curl 请求 curl v X GET H Content Type application json d query some text mode 0 http host domain abc com
  • Woocommerce REST API 扩展订单响应

    我正在寻找一种扩展 wc api vX orders 响应的方法 我在结帐中添加了多个自定义字段 例如 关系编号 交货日期等 这些元数据保存在订单中 wp postmeta 表 但为什么他们不随 api 返回呢 通常 您可以使用以下代码扩展
  • 如何使用 php Restful 以 api 为中心的内部设计而不是使用 http 请求

    我想创建一个以 php Restful api 为中心的 Web 应用程序 网站 其中有从前端代码调用的数据 api 除了每次加载页面时进行 HTTP curl 请求调用之外 使用 slim 等框架进行内部 API 调用还能做什么 我不确定
  • Spring-data-rest 和 Spring-jpa [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 数据休息和 jpa 我使用 Embe
  • 为什么注解属性Rest.rootUrl的值必须是常量表达式?

    我在用着Android 注解框架 https github com excilys androidannotations 专门用于休息整合 我有以下代码 主机配置接口 public interface Host public String
  • 使用 REST 或 Web 服务上传/下载文件

    是否可以使用 REST 或任何其他 Web 服务上传 下载文件并发送 HTML 代码 这必须可以使用 PHP Java 或 ASP I think this http www mkyong com webservices jax rs fi

随机推荐

  • Jquery Flipbook 上传 PDF

    我正在使用Builtbywill Flipbook div div title This is a page title img src image1 jpg div div img src image2 jpg div div title
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 包管理器控制台中缺少文件错误

    我们的开发团队的一些成员在打开包管理器控制台时开始看到以下错误 它完全阻止我们运行实体框架命令 我们已经检查过并且提到的文件确实存在 GetEvent types ps1xml Diagnostics Format ps1xml Diagn
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • 可以创建一个独立的方法/函数(没有任何类)

    我正在尝试理解闲聊 是否可以有一个独立的方法 函数 它不属于任何特定类 并且可以稍后调用 amethod amethod called printNl amethod 上面的代码给出以下错误 simpleclass st 1 expecte
  • Typescript 和 React:在组件之间传递 props 与默认 props

    我对 Typescript 和使用 Typescript 创建 React 应用程序相当陌生 我在将道具从一个组件传递到另一个组件时遇到了一些麻烦 我在下面提供了一个示例 我的问题是围绕组件的默认道具 当我在父组件中调用子组件时 出现错误
  • 如何根据特定条件触发电子邮件以在 Jenkins 中成功构建

    每当某个条件在构建后步骤的执行 shell 中成立时成功的构建 我想触发电子邮件发送 问题是 即使条件不成立 构建也会被视为success 我正在尝试实现的内容 if condition true then
  • 单击应用程序的启动图标时会发生什么?

    单击应用程序的启动图标时会发生什么 是否总是发送新意图 或者结果有时与从最近的任务恢复任务相同 如果发送意图 它何时被发送到新活动实例的 onCreate 方法以及何时通过现有活动的 onNewIntent 进行路由 假设意图通过任务中现有
  • c++链接器,如何链接iostream文件?

    我有一个名为main cpp包括iostream 我编译了main cpp它工作没有错误 所以我的问题是 我编译了main cpp我没有链接iostream with main cpp 那么这怎么可能呢 或者编译器是否链接了iostream
  • 如何在 Swift 泛型中说“同一类”

    如果 Swift 泛型类型约束是协议名称 我可以要求受该协议约束的两种类型为同一类型 例如 protocol Flier struct Bird Flier struct Insect Flier func flockTwoTogether
  • Silverlight 4 WCF Ria 服务的轮询模式

    我正在使用 Ria Services 在 Silverlight 中创建一个应用程序 一旦启动服务调用 可能会花费相当多的时间 我一直在寻找增加 WCF 服务超时的方法 但我越想越觉得这不是正确的方法 我宁愿做的是调用 DomainCont
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 无法访问 res 文件夹?

    我有一个 Java 编程问题 需要帮助 我的类文件位于单独的包中 不是默认包 我正在尝试从我的 res 文件夹访问文件 我已将其添加为类文件夹 使用属性 gt 库 gt 添加类文件夹 在我的类中 我有以下代码 InputStream IS
  • 提供者未返回 ProviderManifest 实例

    当我想配置我的数据源 EntityDataSource 1 并将实体数据模型自动生成的连接字符串分配给它时 我收到错误 无法加载连接字符串中指定的元数据 请考虑重建 Web 项目以构建可能包含元数据的程序集 发生以下错误 提供程序未返回 P
  • Flask-Session 扩展与默认会话

    我在用着 from flask import session app route def main page if session get key print session exist session get key else print
  • 嵌入式签名 api 文档签名

    我正在使用 DocuSign 将电子签名添加到我的请求中 一切正常 现在 我使用嵌入式方法发送签名请求 通过导航到 URL 立即启动我的工作流程 登录后 执行以下代码 我得到 嵌入视图 但是当我粘贴网址尝试在导航中签署文档时 但会将我重定向
  • 如何对需要其他模块的 Node.js 模块进行单元测试以及如何模拟全局 require 函数?

    这是一个简单的例子 说明了我的问题的症结 var innerLib require path to innerLib function underTest return innerLib doComplexStuff module expo
  • 在 Ajax 类型的 Extjs 5 存储上进行本地分页

    我正在开发一个应用程序 从一开始就加载所有数据并不是很不方便 我通过 Ajax 从服务器获取 json 数据 而我的商店执行此操作非常简单 Ext define MODIFE store CentroBeneficio extend Ext
  • 在 postgresql 中查找和汇总具有重叠记录的日期范围

    我有一个大型数据集 我想对记录具有重叠时间的计数进行求和 例如 给定数据 id 1 name A start 2018 12 10 00 00 00 end 2018 12 20 00 00 00 count 34 id 2 name B
  • 3rd party API 返回 500 错误,我的 API 应该返回什么代码

    我在基于 ZF2 Zend Framework 2 的框架中编写了一个 API 称为 Apigility 我的服务可以查询第 3 方 API 偶尔 我会收到 500 错误消息 要么是由于令牌过期 要么是其他原因 我的 API 应如何响应我的