首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Boot处理REST API错误的正确姿势

如何正确的处理API的返回信息,让返回的错误信息提供更多的含义是一个非常值得做的功能。...那么就让我们学习下如何正确地处理这些异常,并将它们转成更好的JSON表示形式,使我们的API客户端理解起来更加的轻松。...一个常见的情况是比如http代码400,表示BAD_REQUEST,这种情况是当客户端例如发送了格式不正确的字段,比如一个无效的电子邮件地址。 timestamp属性:保存发生错误的日期时间。...事实上,正确的方法应该是返回HTTP / 1.1规范中指定的HTTP code 404(NOT FOUND)。...在handleEntityNotFound()方法中,我们将HTTP状态代码设置为NOT_FOUND并使用了新的异常消息。 以下是GET /birds/2 终端的响应: ?

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

    正确甄别API、REST API、RESTful API和Web Service之间的异同

    下面是设计REST风格的系统架构时需要满足或者遵循的一些基本条件和原则: 1、在REST架构中,Web中所有的事物(文本、音频、视频、图片、链接)都可以被统一的抽象为资源(resource) 2、在REST...4、可缓存(可选项),在REST架构中需要缓存来有效的处理大批量的请求 5、接口一致 现在,了解了API和REST API的基本概念,那这两者之间有什么异同?...) 下面是一个具体的小例子,以学生管理为例,设计学生管理的API。...学生管理API的使用者调用的API如下: 1、创建学生资源:[POST] http://www.example.com/student 2、获取所有学生资源:[GET] http://www.example.com...2、基于REST的Web Service :REST(Representational State Transfer)是一种软件架构,它使用JSON来描述数据格式,最重要的是HTTP传输协议对REST来说是非必须的

    26.4K1313

    基于http的百度语音 REST api

    什么是REST api?...-- REpresentational State Transfer REST api是基于http请求的一种api,就百度语音识别的实例来讲,通过百度提供的url加上经过编码的音频文件,向百度服务器发出请求...优点 不受平台限制(我在树莓派上操作的) 代码简单 缺点: 依赖网络 对要识别的音频格式要求高 百度语音REST api 支持的语言java、php、python、c# 、Node.js。...下面分享一个python2.7版的实例 1.先去注册开发者账号,新建应用,获得APP_ID,API_KEY,SECRET_KEY 2.安装SDK 安装使用SDK有如下方式: 如果已安装pip,执行pip..., SECRET_KEY) result = aipSpeech.synthesis(' 一二三四五六七八九十', 'zh', 1, { 'vol': 5, }) # 识别正确返回语音二进制

    2.2K30

    用ASP.NET Core 2.1 建立规范的 REST API -- 缓存和并发

    它的别名还有反向代理服务器缓存,HTTP加速器等。 代理缓存,它位于网络上,共享的,它既不位于API消费者客户端,也不在API服务器上,它在网络的其它地方。...如果API添加了一条数据,那么针对这10000个客户端,所缓存的数据就不对了,针对这个例子有可能半个小时都会返回不正确的数据,这时就需要用到验证模型了。...更多指令请查看: https://tools.ietf.org/html/rfc7234#section-5.2 Cache Headers 根据REST的约束, 为了支持HTTP缓存, 我们需要一个可以生成正确的响应...悲观并发控制意味着资源是为客户1锁定的,只要资源处于锁定的状态,别人就不能修改它,只有客户1可以修改它。但是悲观并发控制是无法在REST下实现的,因为REST有个无状态约束。...最后客户1再更新(使用的是老的ETag): ? 返回412。 本文比较短,一些关于缓存技术的内容并没有写,距离REST的主题有点远。

    70830

    通过一组RESTful API暴露CQRS系统功能

    这种方式结合了HTTP的语义、REST API基于资源的风格,并能够处理分布式计算的某些问题,例如最终一致性和并发性。...我们需要记住,资源是一个名词,HTTP谓词则表示动词和动作,而自描述的消息(REST的宗旨之一)则是表达其它维度信息和意图的手段。实际上,在HTTP消息中所包含的命令就应该足以描述任何人为的操作了。...在将命令映射到谓词时,选择正确谓词的关键不仅仅在于语义,同样要考虑幂等性(至于谓词的安全性则无需顾忌,因为任何一个命令谓词都是不安全的)。...结论 不仅通过一套REST API暴露CQRS是可能的,而且HTTP语义的丰富性也使得我们能够在它的基础上编写一套流畅而有效的API。...整个流程包括创建一个由命令和查询(输入输出消息)组成的公开领域,以及能够处理并发和缓存的各种资源。此外,我们还需要将内部领域的查询和命令映射为HTTP谓词,并且使用状态码以表现状态转换和异常。

    72950

    Salesforce LWC学习(三十五) 使用 REST API实现不写Apex的批量创建更新数据

    那么,针对批量数据的场景,是否有什么方式可以不需要apex,直接前台搞定吗?当然可以,我们可以通过调用标准的rest api接口去搞定。...我们在上一篇讲述了标准的rest api,那OK,我们可以尝试不适用后台apex方式去搞定,而是在前台通过rest api去玩一下,说到做到,开弄。...通过这个截图我们可以看出来,这个http 操作有三次的请求,第一次是跨域的检查,request method是option,感兴趣的可以自己查看 ?...好家伙,尽管console报错是CORS,但是其实这个问题的rootcause是 请求返回的code是401未授权,打开 rest api 文档查看一下 ?...破案了,后台通过 UserInfo.getSessionId获取的session信息无法用于REST API的授权,这里就会有一个疑问,因为艾总发过来了一个VF的demo,是可以通过rest去调用的,难道是

    2.3K40

    JSON Patch

    所以仍然把你的符合以下标准 满足以资源形式定义定义 Uri 满足以 HTTP 谓词语义增删改查资源 符合命名要求 …… 的“不标准” Web API 看作是 RESTful 的,也未尝不可。...什么才是真正的 REST Api 并不是本文的重点(Github Rest API v3),笔者在后文讨论的具体实现,也只是符合目前流行的“RESTful”直觉设计。 2....HTTP 谓词 谓词 释义 幂等性 安全性 HEAD 用于获取资源的 HTTP Header 信息 是 是 GET 用于检索信息 是 是 POST 用于创建资源 否 否 PUT 用于更新或替换完整资源或批量更新集合...PATCH 是一个相对较新的 HTTP 谓词,在客户端或服务器不支持 PATCH 动作时,也可以使用 Post/Put 更新资源 否 否 3....PATCH & JSON Patch 结合上述 HTTP 谓词,通常情况下,更新部分资源的部分数据时,有以下四种做法: 使用 PUT 谓词, 尽可能使用完整对象来更新资源(即根本不使用 PATCH )。

    1.4K60

    REST API和SOAP API之间的区别

    以无状态的方式传输、访问和操作文本数据表示。当正确部署时,它在internet上的不同应用程序之间提供统一的互操作性。...对于与RESTful API的编程交互,可以使用十几种或更多的客户端API或工具。...基于rest的请求的一个重要方面是,每个请求包含足够的状态来响应请求。这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。...它们返回的不是201,而是创建了资源主体的200。这似乎是避免第二个请求的快捷方式,但它结合了POST和GET函数,同时增加了缓存资源的可能性。避免以牺牲大局为代价而走捷径的冲动。...PATCH 作为最新的动词,PATCH直到2010年才被作为HTTP的一部分正式采用。目标是提供一种标准化的方式来表示部分更新。标准格式的补丁请求允许交互对意图更加明确。

    1.3K20

    JSON Patch

    所以仍然把你的符合以下标准 满足以资源形式定义定义 Uri 满足以 HTTP 谓词语义增删改查资源 符合命名要求 …… 的“不标准” Web API 看作是 RESTful 的,也未尝不可。...什么才是真正的 REST Api 并不是本文的重点(Github Rest API v3),笔者在后文讨论的具体实现,也只是符合目前流行的“RESTful”直觉设计。 2....HTTP 谓词 谓词 释义 幂等性 安全性 HEAD 用于获取资源的 HTTP Header 信息 是 是 GET 用于检索信息 是 是 POST 用于创建资源 否 否 PUT 用于更新或替换完整资源或批量更新集合...PATCH 是一个相对较新的 HTTP 谓词,在客户端或服务器不支持 PATCH 动作时,也可以使用 Post/Put 更新资源 否 否 3....PATCH & JSON Patch 结合上述 HTTP 谓词,通常情况下,更新部分资源的部分数据时,有以下四种做法: 使用 PUT 谓词, 尽可能使用完整对象来更新资源(即根本不使用 PATCH )。

    2K10

    REST API和SOAP API之间的区别

    以无状态的方式传输、访问和操作文本数据表示。当正确部署时,它在internet上的不同应用程序之间提供统一的互操作性。...对于与RESTful API的编程交互,可以使用十几种或更多的客户端API或工具。...基于rest的请求的一个重要方面是,每个请求包含足够的状态来响应请求。这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。...它们返回的不是201,而是创建了资源主体的200。这似乎是避免第二个请求的快捷方式,但它结合了POST和GET函数,同时增加了缓存资源的可能性。避免以牺牲大局为代价而走捷径的冲动。...PATCH 作为最新的动词,PATCH直到2010年才被作为HTTP的一部分正式采用。目标是提供一种标准化的方式来表示部分更新。标准格式的补丁请求允许交互对意图更加明确。

    2K10

    REST vs RPC - RESTful究竟是什么?

    REST是一种设计原则,是一种表示软件解决方案的结构化方式 - 特别是将解决方案的各个方面暴露给客户端消费者。REST的核心原则是各个方法的返回可以建模为客户端可以使用或采取行动的资源。...因此我们不需要维护一个经常被修改的面向用户的开发项目,并从中享受RESTful带来的好处 请考虑以餐馆中的订单场景进行建模,设计HTTP API -RPC API以“动词”的形式思考,将餐厅功能公开为接受参数的函数调用...返回的状态码是手工编码的,也是你定义的一部分。 -相反,REST API将问题域中的各种实体建模为资源,并使用HTTP谓词来表示针对这些资源的事务 -  POST创建,PUT更新和GET读取。...重点 可以建模为客户端可以使用或采取行动的资源,不是客户端和服务器之间通信的实现细节 资源-----返回一个资源对象 正确返回 { "login":true } 错误返回 { true } 核心...RESTful API的具体实现则是 资源---url本身就是名词,而不含有动词 错误 /getLoginInfo 正确 /loginInfo 使用或采取行动----略 不是客户端和服务器之间通信的实现细节

    1.4K50

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

    REST API Best Salesforce提供了一个标准的REST API,远程系统可以使用该API: –发布事件以通知您的Salesforce组织 –查询组织中的数据 –创建、更新和删除数据...不支持对Salesforce的异步调用。 •REST API与SOAP API-REST将资源(实体/对象)公开为URI,并使用HTTP谓词定义对这些资源的CRUD操作。...使用restapi复合资源在一个API调用中进行一系列更新。 •REST复合资源使用这些REST API资源在单个API调用中执行多个操作。也可以使用一个调用的输出作为下一个调用的输入。...Apex REST services Suboptimal Apex类可以公开为映射到特定uri的REST资源,并使用针对它定义的HTTP谓词(例如POST或GET)。...下图为SOAP API流程 ? 下图为REST API流程 ? 五. 其他关键点 1.调用机制:调用机制取决于为实现此模式而选择的解决方案。

    2.8K20

    REST API和GraphQL API的比较

    REST API REST(表述性状态传输)API 是一种应用程序接口 (API) 的架构风格,它使用 HTTP 请求来访问和使用数据。...RESTful API 使用 HTTP 方法在处理数据时执行 CRUD(创建、读取、更新和删除)过程。 为了促进缓存、AB 测试、身份验证和其他过程,标头向客户端和服务器提供信息。...id 为 1 的学生的所有数据的对象。...由于请求需要时间才能到达正确的数据并提供相关信息,因此开发人员必须进行多次调用。 缓存 REST API 的所有 GET 端点都可以缓存在服务器上或通过 CDN。...它们也可以由客户端存储以供经常使用,并由浏览器缓存。GraphQL 通过单个端点提供,通常是 (/graphql),并且与 HTTP 规范不同。因此,无法像 REST API 那样缓存查询。

    56210

    如何设计restful风格接口

    REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口); 2....即通过HTTP动词来实现资源的状态扭转: GET 用来获取资源, POST 用来新建资源(也可以用于更新资源), PUT 用来更新资源, DELETE 用来删除资源。...: 添加好友 UPDATE http://api.qc.com/v1/profile: 更新个人资料 4....比如:左边是错误的设计,而右边是正确的 GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗 GET /rest/api/addDogs --> POST...怎么用RESTful 1、每个资源使用2个URL,网址中只能有名词 2、对于资源的操作类型由HTTP动词来表示 3、统一的返回结果 4、返回正确的状态码 5、允许通过HTTP内容协商,建议格式预定义为JSON

    1.2K20

    微服务:API网关在API安全中的作用

    典型的API网关包括: 1、安全性(身份验证和潜在的授权) 2、管理访问配额和节流 3、缓存(代理语句和缓存) 4、API组成和处理 5...例如,Twitter、Facebook和其他公司提供基于广告的API,允许基于报告和分析的定向广告,但广告代理和其他品牌必须为访问这些API付费。...返回一个“平衡的”错误对象是一个很好的实践,它具有正确的HTTP状态代码、最少的必需错误消息,并且在错误条件下没有堆栈跟踪。这将改进错误处理并保护API实现细节不受攻击者的攻击。...rest式服务通常允许多个方法访问该实体上的不同操作的给定URL。例如,GET请求可能读取实体,而PUT将更新现有实体,POST将创建新实体,DELETE将删除现有实体。...对于服务来说,适当地限制允许的谓词是很重要的,这样只有允许的谓词才能工作,而所有其他的谓词将返回适当的响应代码(例如,a403 Forbidden)。

    3.1K40

    Rest api简介

    回页首 正确的使用 HTTP 响应代码 作为 API 的设计者,正确的将 API 执行结果和失败原因用清晰简洁的方式传达给客户程序是十分关键的一步。...使用 HTTP 头进行缓存处理 在 REST 的构架中,我们除了在与后台的数据交换中,需要有一个良好的缓存机制外,针对 REST API 请求都是在远端用 HTTP 发起这一特点,还需要为网络缓存进行更多考虑...通过减少 HTTP 响应内容,避免不必要的 HTTP 连接等方式,达到提高 REST API 使用效率的目的。 HTTP 头中,有多个字段可以用于缓存处理。比较常用的有缓存控制和条件请求。...,可以帮助我们更好的设计 REST API: 批量更新: 当用户需要更新多个资源的时候,你打算让开发者一次次的发送 HTTP 请求逐个更新吗?...你可以考虑在设计 API 的时候允许客户同时创建或者更新多个资源。

    2.2K60
    领券