首页
学习
活动
专区
圈层
工具
发布

如何使用SpringMvc处理Rest异常

大多数rest API设计者认为,尽可能地重用HTTP规范定义的状态码是最好的,因为许许多多的http客户端都能理解这些错误情况的绝大多数,并且,“重用”这件事鼓励行为的一致性,这对开发有好处。...rest错误情况的表述 既然状态码很可能不够用,那么当最终用户遭遇错误情况时,我们可以提供什么其他东西来协助他们呢?显然可以提供可读的错误信息,方便开发者查看。...我认为在使用http客户端时,处理响应的流程如下:  要捕获住所使用的http客户端组件声明的所有异常。...对于那些有可能是中间结点返回的错误响应(常见的包括401、403、404、405、406、408、409、429、500、502、503、504)要特别注意,它们的响应体未必符合http接口文档里声明的格式...2.2.2,资源未曾出现过:类似于未出生。这里仅罗列一下细分情况。  这里“上传文件”的例子看起来有点太刻意了,但这里关键是说你的API使用自定义的错误码,可以表达更丰富的错误信息。

1.7K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    撰写合格的REST API

    两周前因为公司一次裁人,好几个人的活都被按在了我头上,这其中的一大部分是一系列REST API,撰写者号称基本完成,我测试了一下,发现尽管从功能的角度来说,这些API实现了spec的显式要求,但是从实际使用的角度...Status Code 很多REST API犯下的另一个错误是:返回数据时不遵循RFC定义的status code,而是一律200 ok + error message。...请求数据验证 我们从数据流入REST API的第一步 —— 请求数据的验证 —— 来保证安全性。...你可以把请求数据验证看成一个巨大的漏斗,把不必要的访问统统过滤在第一线: Request headers是否合法:如果出现了某些不该有的头,或者某些必须包含的头没有出现或者内容不合法,根据其错误类型一律返回...这时候,需要部署HTTPS。在其之上再加一层屏障。 其他 做到了接口一致性(符合RFC)和安全性,REST API可以算得上是合格了。

    2.1K50

    那些年,我们一起误解过的REST

    最近几年REST API越来越流行,特别是随着微服务的概念被广泛接受和应用,很多Web Service都使用了REST API。...因为REST需要通过URI来唯一定位某个(或某种)资源,所以查询资源时,各种资源ID一般是放在URI里面,而不是放在请求参数里面。...4) 返回码 REST使用HTTP返回码来表示请求的结果。如果使用规范的REST API,那么根据HTTP返回码就能确定很多信息。常见的HTTP返回码如下: 200(OK):表示请求成功。...500(Internal Server Error):通用内部错误。 502(Bad Gateway):网关错误,从上游服务器收到无效响应。...如果前面两次请求都通过了,那么调用查询接口则可以查询到工资;否则调用查询接口则报未鉴权的错误。查询工资接口的返回结果与前面两次请求的状态是关联的,所以是有状态的服务。

    2.4K173

    建议看看这篇RestFul API简明教程!

    大白话来说 REST 中的状态转移更多地描述的服务器端资源的状态,比如你通过增删改查(通过 HTTP 动词实现)引起资源状态的改变。...二、REST 接口规范 1、动作 GET :请求从服务器获取特定资源。举个例子:GET /classs(获取所有班级) POST :在服务器上创建一个新的资源。...因为 REST 中的资源往往和数据库中的表对应,而数据库中的表都是同种记录的"集合"(collection)。如果 API 调用并不涉及资源(如计算,翻译等操作)的话,可以用动词。...301 永久重定向 400 错误请求 500 服务器错误 201 创建 304 资源未修改 401 未授权 502 网关错误 403 禁止访问 504 网关超时 404 未找到 405...{"link": { "rel": "collection https://www.example.com/classs", "href": "https://api.example.com

    1.2K20

    ⚡REST 和 SOAP 协议有什么区别?

    网站不会从它的数据库中检索这些数据,而是通过向专门提供航班、酒店等服务的 API 发送请求来获取数据的。Web API 就是使用 HTTP 协议传输数据的 API。...REST 仅支持 HTTP。使用 SOAP,你可以使用 HTTP、HTTPS、用户数据协议(UDP)、传输控制协议(TCP)或简单邮件传输协议(SMTP)。...在响应中,Body 部分包含 API 的响应以及所请求的信息。* **Fault(错误):** 可选的部分。如果 SOAP API 无法处理请求,它将发送在此处定义的错误消息。...在处理 SOAP XML 消息时,由于其组成的复杂性,通常需要在编程语言中集成 SOAP 库进行 API 调用,这相对增加了抽象层和处理开销。...从 GraphQL API 请求数据比使用 REST 更高效。使用 REST 时,有单独的资源 URL(有时多达数百个)来暴露 API 的功能。

    1.6K00

    创建 REST 服务简介

    调度类(%CSP.REST 的子类)。该类负责接收HTTP请求并调用实现类中合适的方法。一个实现类(%REST.Impl 的子类)。此类定义实现 REST 调用的方法。...API 管理工具生成实现类的存根版本,然后可以扩展它以包含必要的应用程序逻辑。 (逻辑当然可以调用此类之外的代码。)%REST.Impl 类提供了可以调用的方法,以便设置 HTTP 标头、报告错误等。...有用的第三方工具包括 REST 测试工具,例如 PostMan (https://www.getpostman.com/) 和 Swagger 编辑器 (https://swagger.io/tools...每当编译规范类时,编译器都会重新生成调度类并更新实现类。Dispatch Class调用 REST 服务时直接调用调度类。...此方法进行其他检查,并在出现错误时调用 %REST.Impl 的其他方法。重要提示:因为调度类是一个生成的类,你永远不应该编辑它。 提供了覆盖部分调度类而不对其进行编辑的机制。

    1K20

    REST 深度进阶

    最近团队人数在扩大,才发现,REST 这个出来很多年头的东西,居然还有人用不好。 说起来,REST 出现已经很久了。...在我看来,所有的 API 都应该可以在不看注释和说明的情况下被调用方理解,从调用端点,到参数,和 JSON 的键。 这儿,我参考了国外的一些规则。规则也很简单: 用名词,别用动词。...HTTPs 提供了一种比 HTTP 更安全的方式,可以在基本网络层面除去中间人攻击,并加密调用端和 API 的通讯。在编程时,使用 HTTPs 是个成本最低但又确实有效的安全方式。...把使用 HTTPs 当成一个标准和习惯,有一天你会感谢自己的。 2. 从构建 API 开始,就要做到控制访问 你看得没错,是从构建 API 开始。...如果真出现了 API 被攻击什么的,简单地关闭暴露的密钥就可以了。当然,我们还可以用密钥来跟踪 API 的调用,包括调用量、调用异常等。 3. 小心对待敏感数据 API 代表了网络,代表了通讯。

    67210

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    为了在扩容时快速集成应用,实际的API会使用协议或规范来定义消息传递的语义和语法。这些规范构成了API架构。 过去几年曾出现了几种不同的API架构风格,每种风格都有其特定的标准数据交互模式。...RPC将本地程序调用扩展到了HTTP API的上下文中(RPC的最上层大部分都是HTTP)。 一开始的XML-RPC问题比较多,它很难保证XML载体的数据类型。...这也是为什么HATEOAS主要作为RESTful API设计的长期开发愿景。 REST和RPC之间有一些灰色区域,特别是当一个服务具有一部分REST特性,一部分RPC特性时。...缓存友好:重用了大量HTTP工具,REST是唯一一种允许在HTTP层缓存数据的风格。相比之下,要在其他API风格中实现缓存,则要求配置额外的缓存模块。...如何对资源进行建模,以及对哪些资源建模取决于具体场景,这使得REST在理论上是简单的,但实践上是困难的。 载荷较大:REST会返回大量元数据,因此客户端可以从响应的信息中了解到应用的状态。

    3.7K11

    kubernetes 核心组件之 APIServer

    请求; 用于基于Tocken文件或客户端证书及HTTP Base的认证; 用于基于策略的授权; 默认不启动HTTPS安全访问控制。...kubelet与API Server交互 每个Node节点上的kubelet定期就会调用API Server的REST接口报告自身状态,API Server接收这些信息后,将节点状态信息更新到etcd中...发生这种情况时,将提供迁移说明。迁移时可能需要删除、编辑和重新创建 API 对象。编辑过程可能需要一些思考。对于依赖该功能的应用程序,可能需要停机。...功能特性的稳定版本会持续出现在许多后续版本的发行软件中。...所以说,可以这么设置,在集群内部组件间通信使用HTTP,集群外部就使用HTTPS,这样既增加了安全性,也不至于太复杂。

    1.1K21

    API 架构风格抉择:SOAP、REST、GraphQL 和 RPC 的特性、优势与局限

    RPC 扩展了本地过程调用的概念,但将其置于 HTTP API 的上下文中。 最初的 XML-RPC 存在问题,因为确保 XML 负载的数据类型非常困难。...REST 随后出现,两者最初并行使用,但很快 REST 就赢得了普及。 SOAP 的工作原理 XML 数据格式拖累了诸多繁琐的流程,再加上庞大的消息结构,使得 SOAP 成为最冗长的 API 样式。...当一个服务同时实现了 REST 和 RPC 的部分功能时,REST 和 RPC 之间可能确实存在一个灰色地带。REST 基于资源或名词,而不是基于动作或动词。...REST复用了大量 HTTP 工具,是唯一允许在 HTTP 级别缓存数据的样式。相比之下,在任何其他 API 上实现缓存都需要配置额外的缓存模块。 支持多种格式。...参考文章: https://levelup.gitconnected.com/comparing-api-architectural-styles-soap-vs-rest-vs-graphql-vs-rpc

    1.2K10

    你了解过系统集成服务集成交互技术:REST服务集成——RESTAPI吗

    REST服务集成微服务架构倾向于使用轻量级的通信机制(通常是HTTP提供的API调用方式)实现服务之间的交互,基于API优先的服务契约管理成为微服务架构的重要原则之一。...REST中的重要概念 REST从语义层面将响应结果定义为资源,并使用HTTP的标准动词映射作为对资源的操作,形成了一种以资源为核心、以HTTP为操作方式的,与语言无关、平台无关的服务间的通信机制,如下图所示是...另外,最重要的是REST基于HTTP抽象资源的分布式调用,将分布式调用绑定在资源的操作上面,而在REST中,资源是一个抽象的概念,资源本身使用URI表示,与具体实现无关,这样就给REST带来了更好的解耦性...下面我们来看一个虚拟的项目:在线商品服务介绍REST API规范接入手册。 REST API请求示例 【协议描述】 请求URL结构: https://domain/api/server/class?...【REST API示例】 1.订单列表 ● 描述:获取所有订单ID列表 ● 路径:/orders ● 方法:GET ● 参数:page,count curl-X GET https://test.cn/

    2.2K20

    Microsoft REST API指南

    Microsoft REST API指南 摘要 Microsoft REST API指南作为一种设计原则,鼓励应用程序开发人员通过RESTful HTTP接口访问资源。...通常会返回“5xx”HTTP错误代码。 故障会影响整体 API 的可用性。 由于速率限制(限流)或配额故障而失败的调用不能算作故障。...由于服务快速失败(fast-failing)请求(通常是为了保护自己)而失败的调用会被视为故障。 [*]译者注:故障意味着服务端代码出现故障,可能会影响整体的API使用。比如数据库连接超时。...5.5 长期运行API故障 对于长期运行的 API,很可能出现第一次请求成功,且后续每次去获取结果时 API 也处于正常运行(每次都回传 200)中,但其底层操作已经失败了的情况。...如果服务不支持UPSERT,则针对不存在的资源的 PATCH 调用必须导致 HTTP “409 Conflict”错误。

    6.2K11

    Salesforce Integration 概览(五) Remote Call-In(远程操作 外部->salesforce)

    •事务/提交行为默认情况下,如果某些记录标记有错误,则每个API调用都允许部分成功。这可以更改为“全部或无”行为,如果发生任何错误,将回滚所有结果。不可能跨多个API调用跨事务。...不支持对Salesforce的异步调用。 •REST API与SOAP API-REST将资源(实体/对象)公开为URI,并使用HTTP谓词定义对这些资源的CRUD操作。...然后,远程系统使用适当的动词生成REST调用(HTTP请求),并处理返回的结果(支持JSON和XML数据格式)。...在发生错误或超时的情况下,远程系统必须管理多个(重复)调用,以避免重复插入和冗余更新(尤其是在触发下游触发器和工作流规则时)。...一个user1小时有最多3600次 login调用的限制,如果出现了 Login Rate Exceeded问题,要么使用其他的账号,要么成功登录以后存储session 信息,减少 login方法的调用

    3.8K20

    gRPC vs REST:两种API架构风格的对比

    但构建 API 时主要有 3 种模型:RPC(远程过程调用)、REST(表征状态传输)和 GraphQL。在本文中,我们将重点介绍前两个。 2什么是 RPC? RPC 使用客户端 - 服务器模型。...RPC 支持本地和分布式环境中的远程过程调用。 与 REST API 一样,RPC 还建立了交互规则以及用户如何提交“调用”(请求)以调用方法与服务通信和交互的机制。 3什么是 REST?...使用 REST API 时,来自后端数据的响应通过 JSON 或 XML 消息格式传递给客户端(或用户)。这种架构模型倾向于遵循 HTTP 协议。...事实上,不管使用的是哪种模型(RPC 或 REST),大多数现代 API 实现都将 API 映射到相同的 HTTP 协议时。...其原因在于,在使用 REST 时,必须将 JSON(或其他格式)序列化并转换为客户端和服务器端使用的编程语言。这在传输数据的过程中增加了一个额外步骤,从而可能会损害性能并增加出现错误的可能性。

    2K30
    领券