我在错误表示中使用这些名称作为error数组的值,所以我只需要操心数字状态码和可选的长描述。...jsonify()函数返回一个默认状态码为200的瓶Response对象,因此在创建响应之后,我将状态码设置为对应的错误代码。 API将返回的最常见错误将是代码400,代表了“错误的请求”。...API中没有HTML或登录页面的概念,如果客户端发送带有无效或所有权凭证的请求,服务器必须拒绝请求并返回401状态码。...pC1Nu9wwyNt8VCj1trWilFdFI276AcbS" API友好的错误消息 你是否还记得,在本章的前部分,当我要求你用一个无效的用户URL从浏览器发送一个API请求时发生了什么?...在API蓝图中的API可能返回的许多错误可以被重写为JSON版本,但是仍然有一些错误是由Flask处理的,处理这些错误的处理函数是被大量注册到应用中的,返回的是HTML。
特别关注 HTTP 状态码 这一点非常重要,如果你从这篇文章中只记住一件事,那可能就是它了。 你的API最糟糕的事情莫过于返回一个带有200 OK状态码的错误响应。...这是最差的语义,相反,应该返回一个能准确描述错误类型的有意义HTTP状态码。尽管如此,你可能还在想:“但我按照您推荐的方式,在响应体中发送了错误详细信息,那么问题出在哪里呢?” 让我给你讲个故事吧。...状态码返回200 OK,但我不能完全确定它有没有处理我的请求失败。...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同的HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。...根据不同情况,以下是我的备忘单,用于了解我正在处理什么问题: 消费者没有提供身份验证凭据吗?他们的SSO令牌是否无效/超时? 401 未授权。
在这篇第一篇文章中,我将分享一个错误,我已经在多个公司看到过这个错误,可能导致连锁故障。我称之为 Kubernetes 深度健康检查。...其依赖关系图看起来像这样: 因此,我们可以编写一个就绪端点,在所有以下内容可用时返回 JSON 和 200: { "available":{ "auth":true,...auth 和 balance,我们检查它们的就绪端点是否返回 200。...对于数据库,我们执行 SELECT 1; 如果任何一个失败,我们会为 JSON 键返回 false,并返回 HTTP 500 错误。...一旦事件得到解决,我们应该考虑我们的服务是否需要该依赖,以及我们可以做些什么工作来清除它。我们可以转向更无状态的身份验证模型吗?我们应该使用缓存吗?我们可以在一些用户流中断路由吗?
Docker有关,由于Docker需要安装虚拟机什么的,就先以这个与Laravel有关的开篇。...这样我们可以明确地返回JSON数据以及发送客户端可以解析的HTTP代码。你将要返回的最常见的代码是: 200: 好。标准成功代码和默认选项。 201:创建对象。有用的store行动(action)。...当一个动作执行成功,但没有内容返回。 206:部分内容。当您必须返回分页的资源列表时很有用。 400: 错误的请求。无法通过验证的请求的标准选项。 401:未经授权 用户需要进行身份验证。...理想情况下,你不会明确地返回这个,但如果有意外的中断,这是你的用户将要收到的。 503: 暂停服务。相当自我解释,还有一个不会被应用程序显式返回的代码。...Laravel肯定提高了我对PHP的经验,并且易于使用测试巩固了我对该框架的兴趣。这不完美,但它足够灵活,可以让您解决问题。
你可能知道,HTTP 中你可以返回带有 200 状态码的错误响应,但这是十分糟糕的。不要这么做,你应当返回与返回错误类型相一致的具有一定含义的状态码。...当然可以,不过让我讲一个故事: 我曾经使用过一个 API,对于它返回的所有响应的状态码均是 200 OK,同时通过响应数据中的 status 字段来表示当前的请求是否成功,比如: {..."status": "success", "data": {} } 所以,虽然状态码是 200 OK,但我却不能绝对确定请求是否成功,事实上,当错误发生时,这个 API 会按如下代码片段返回响应...比如,如果一个 POST 类型的端点返回 201 Created,那么所有的 POST 端点都应返回同样的状态码。这样做的好处在于,调用者无需在意端点返回的状态码取决于某种特殊条件,也就形成了一致性。...我分享两种特别适合使用 202 Accepted 状态码的业务场景: 如果资源是经过位于将来一系列处理流程之后才创建的,比如当某项作业完成时 如果资源已经存在,但这是理想状态,因此不应该被识别为一个错误时
因此,我喜欢返回“OK”,尽管这是一个字符串,但是在返回的时候会被包装成一个简单的响应对象。 ? 使用HTTP状态码和错误响应 因为我们使用了HTTP方法,所以我们应当使用HTTP状态码。...我喜欢使用这些状态码: 对于数据错误 400:请求信息不完整或无法解析。 422:请求信息完整,但无效。 404:资源不存在。 409:资源冲突。...对于鉴权错误 401:访问令牌没有提供,或者无效。 403:访问令牌有效,但没有权限。 对于标准状态 200: 所有的都正确。 500: 服务器内部抛出错误。...从上面这些情况来看,有两个错误会返回422,不过他们的原因是不同的。这就是为什么我们需要一个错误码,甚至是一个错误描述。...另外值得一提的是,这个值是从version.txt文件读取到的,如果读取错误或者文件不存在,则默认值为 ? 。
从端点名称到输入参数,再到 JSON 键。 所以让我们从 API 端点开始。规则也非常的简单: 不要用动词,而是用名词。 用复数替代单数。...如果你不了解,那么 HTTP 的状态代码可以在任何你能想到的情况下使用。你只要知道用哪个,然后再返回到客户端。HTTP 相应状态代码有 50 多种,每一种都有其特殊的意义,需要在特定的环境中加以应用。...因为我们响应的状态代码是 401(未授权),所以大家都知道这是客户端故障,必须通过客户端来解决,而非 API。我只是举一个例子,但我的意思是,你应该在适当的情况下使用适当的 HTTP 状态代码。...所以,如果是这样的话,你很有可能会返回一个错误信息:“输入的电子邮件地址无效”。客户端可以读取并将其显示给用户。同样,我们需要确保你能够涵盖所有的问题,包括从验证到服务器的故障。...要实现这个目标,我们最好能找到一种适用于各种情景的通用错误模式。
[logo.jpg] 【SpringBoot WEB 系列】RestTemplate 之非 200 状态码信息捕获 前面介绍的 RestTemplate 的使用,都是接口正常返回 200 的状态码 case...,当返回非 200 状态码时,会直接抛异常,如果我希望能捕获异常,并针对正常获取返回的 message,可以如何处理呢?...REST 服务借助前一篇的鉴权,如果鉴权失败,则返回 401 状态码,具体实现如下 1....; } 一个简单的鉴权逻辑如上,从请求头中拿到Authorization对应的 value,并解析用户名密码,如果满足则正确返回;如果不存在 or 不满足,则返回 http 状态码为 401,并携带对应的提示信息...输出如下, 401 为返回的状态码,其中也包含了 ResponseBody,然后再业务中根据状态码和返回结果进行处理即可 (exception with no auth after errorHandler
axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http...为了解决这个问题,我们在引入 axios 之后,通过修改原型链,来更方便的使用。 //main.js import axios from 'axios' Vue.prototype....`定义是否解析或拒绝给定的promise // HTTP响应状态码。...,但服务器使用状态代码进行响应 //落在2xx的范围之外 console.log(error.response.data); console.log(error.response.status...Error',error.message); }} console.log(error.config); }); 您可以使用validateStatus配置选项定义自定义HTTP状态码错误范围
` 定义对于给定的HTTP 响应状态码是 resolve 或 reject promise 。...data: {}, // `status` HTTP 状态码 status: 200, // `statusText` 来自服务器响应的 HTTP 状态信息 statusText...这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。...('/user/12345') .catch(function (error) { if (error.response) { // 请求已发出,但服务器响应的状态码不在 2xx...Error', error.message); } console.log(error.config); }); 可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围
可以使用\Illuminate\Support\Facades\App::make('pusher')来从Laravel的Container容器中取出Pusher服务。...使用Laravel Pusher Bridge可以不必被Event Broadcaster的一些规则束缚,并且可以通过pusher实例来获取Pusher提供的其他服务如验证频道订阅,查询程序状态等等。...( [body] => {} [status] => 200 ) 调试信息可看到,使用pusher是往这个接口http://api.pusherapp.com:80/apps/200664...最后返回响应,状态200,就表示发送成功了。...可以新建一个view,或者直接使用已有的welcome.blade.php这个view,但先把这个文件的 https://fonts.googleapis.com/css?
但需要注意的是,如果返回结果不是 JSON 格式,便会出现解析错误,抛出 json.decoder.JSONDecodeError 异常。...,来保证请求得到了正常响应,输出成功请求的消息,否则程序终止,这里我们用 requests.codes.ok 得到的是成功的状态码 200。...可以,但这样做起来显得很烦琐,我们有更简单的解决方法。 其实解决这个问题的主要方法就是维持同一个会话,也就是相当于打开一个新的浏览器选项卡而不是新开一个浏览器。...注意,本地私有证书的 key 必须是解密状态,加密状态的 key 是不支持的。 5. 代理设置 对于某些网站,在测试的时候请求几次,能正常获取内容。...) 如果用户名和密码正确的话,请求时就会自动认证成功,会返回 200 状态码;如果认证失败,则返回 401 状态码。
使用 JSON 数据 别误解,这是我的习惯,不是 REST 的。 REST 并没有规定使用什么样的格式来传递数据,XML 也行,JSON 也行。但是在我的团队中,JSON 传递数据是一个硬性要求。...重视出错后的返回信息 API 开发,应该既能处理正确的请求,也能处理错误的请求。错误的请求并不可怕,可怕的是你没有考虑到,或者考虑到了,但没有给到调用端足够的细节。...通常我们见到的是 200,但也有别的成功情况。 3xx - 重定向响应代码。请求被服务器重定向到另一个 URL,就会有这个返回。 4xx - 客户端错误响应代码。...而且,除了状态码外,还要返回相应的错误消息,例如:输入参数 clientId 没有输入、ID 为 23 的数据记录不存在,等等。...重要的是,提供详细的错误信息,可以帮助开发者和调用方了解到底什么地方发生了问题。 放心,调用者不会将这些信息显示给最终用户,但可以通过这些信息来快速的定位和解决问题。 8.
Docs的优秀文章),——因为我们基于HTTP的服务——如果能够正常访问,则应该回复HTTP状态码200,表示健康,可能与一些机器可解析的消息一起解释什么是没问题的。...如果有问题,应该返回一个非200的HTTP状态码 ,可能说明什么是有问题的。请注意,有些人认为失败的检查应返回200 OK,并在响应的负载中指出错误。...我也同意这一点,但为了简单起见,在这片博客文章中我们将坚持使用非200。所以,让我们将这样的端点添加到我们的“account”微服务中。...200状态码,退出1表示不成功的检查 if err !...执行HTTP GET到127.0.0.1:port/health 如果发生错误或返回的HTTP状态不是200 OK,以推出码0推出。等于零表示成功,大于0表示失败。 不妨试试。
提供一个你可以点击的单一 HTTP 端点,该端点将一次性返回你的所有数据(可能是数十或数百 MB 大小)。 我今天想要谈论的是最后一个选项。...挑战:如何返回错误 如果你正在流式传输一个响应,你会从一个 HTTP 200 代码开始……但是如果中途发生错误,可能是在通过数据库分页时发生错误会怎样?...你已经开始发送这个请求,因此你不能将状态代码更改为 500。相反,你需要向正在生成的流写入某种错误。...如果你正在提供一个巨大的 JSON 文档,你至少可以让该 JSON 变得无效,这应该能向你的客户端表明出现了某种问题。 像 CSV 这样的格式处理起来更难。...最简单的解决方案:从云存储生成和返回 实现这种 API 的最健壮的方法似乎是技术上最让人觉得无聊的:分离一个后台任务,让它生成大型响应并将其推送到云存储(S3 或 GCS),然后将用户重定向到一个签名
响应状态码是 resolve 或 reject promise 。...`status` HTTP 状态码 status: 200, // `statusText` 来自服务器响应的 HTTP 状态信息 statusText: "OK", // `headers`...这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。...('/user/12345') .catch(function (error) { if (error.response) { // 请求已发出,但服务器响应的状态码不在 2xx 范围内...Error', error.message); } console.log(error.config); });可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围
本文提到的这些原则,如果你的API能严格按照这些原则来设计,使用者就可以知道它接下来要做什么,并且能减少大量不必要的疑惑或者是愤怒的邮件。...过滤器 当客户端创建了一个请求来获取一个对象列表时,很重要一点就是你要返回给他们一个符合查询条件的所有对象的列表。这个列表可能会很大。但你不能随意给返回数据的数量做限制。...大多数的API不会太常使用这类状态码,但是在新的超媒体样式的API中会使用更多一些。 4xx范围的状态码是保留给客户端错误用的。例如,客户端提供了一些错误的数据或请求了不存在的内容。...这些请求应该是幂等的,不会改变任何服务器的状态。 5xx范围的状态码是保留给服务器端错误用的。这些错误常常是从底层的函数抛出来的,并且开发人员也通常没法处理。...发送这类状态码的目的是确保客户端能得到一些响应。收到5xx响应后,客户端没办法知道服务器端的状态,所以这类状态码是要尽可能的避免。
Nginx 运行的虚拟机的 IP ,我的电脑主机的 IP 是 192.168.56.1 ,这个配置的意思是禁止所有的访问,但允许 192.168.56.88 的访问。...直接从我的电脑主机访问 http://192.168.56.88/access/ ,直接返回 403 错误。而在虚拟机上使用 curl 访问,就可以正常返回结果。这就是访问限制的作用。...其实就是我们访问某个路径的时候,通过向另外一个 URI 发送一个请求,通过这个 URI 返回的结果来断定是否有权限,比如说子请求返回 200 系列的状态码,就表示有权限可以正常访问。...不过咱们学习的话,就简单的让子请求返回状态码就好啦。...你也可以试试返回其它的状态码,看看会有什么效果。
,必须 遵守 HTTP 设计规范,必须 选择合适的 HTTP 状态码。...一定不可 所有接口都返回状态码为 200 的 HTTP 响应,如: HTTP/1.1 200 ok Content-Type: application/json Server: example.com...HTTP 状态码 状态码 描述 1xx 代表请求已被接受,需要继续处理 2xx 请求已成功,请求所希望的响应头或数据体将随此响应返回 3xx 重定向 4xx 客户端原因引起的错误 5xx 服务端原因引起的错误...只有来自客户端的请求被正确的处理后才能返回 2xx 的响应,所以当 API 返回 2xx 类型的状态码时,前端 必须 认定该请求已处理成功 必须强调的是,所有 API 一定不可 返回 1xx 类型的状态码...当 API 发生错误时,必须 返回出错时的详细信息。
领取专属 10元无门槛券
手把手带您无忧上云