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

REST:如果API返回两种类型的响应,它会被认为是restful吗?

REST(Representational State Transfer)是一种软件架构风格,用于构建可扩展的、分布式的网络应用程序。它是一种基于HTTP协议的通信方式,通过使用统一的接口和标准的HTTP方法(GET、POST、PUT、DELETE等)来实现资源的访问和操作。

对于一个API来说,如果它返回两种类型的响应,这并不会影响它是否被认为是RESTful。RESTful的关键是遵循REST的原则和约束,而不是响应的类型。

RESTful的原则和约束包括:

  1. 客户端-服务器架构:将客户端和服务器的关注点分离,使得它们可以独立演化和扩展。
  2. 无状态:每个请求都包含了足够的信息,服务器不需要维护客户端的状态。
  3. 统一接口:使用统一的接口定义资源的访问和操作方式,包括资源的标识、资源的表现形式、资源的操作方法等。
  4. 资源的标识:每个资源都有一个唯一的标识符(URI)来进行访问。
  5. 资源的表现形式:资源可以有多种表现形式(如JSON、XML等),客户端通过选择合适的表现形式来获取资源的表示。
  6. 自描述消息:每个请求和响应都应该包含足够的信息来描述自身。
  7. 超媒体驱动:通过在响应中包含超媒体链接,使得客户端可以动态地发现和访问相关资源。

根据以上原则和约束,一个API可以被认为是RESTful,无论它返回的响应类型是什么。重要的是,API的设计应该符合REST的原则,使得客户端可以通过统一的接口来访问和操作资源。

腾讯云相关产品推荐:

  • API网关:https://cloud.tencent.com/product/apigateway
  • 云函数:https://cloud.tencent.com/product/scf
  • 云数据库MongoDB版:https://cloud.tencent.com/product/cmongodb
  • 云服务器:https://cloud.tencent.com/product/cvm
  • 腾讯云容器服务:https://cloud.tencent.com/product/tke
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

我们应该重新定义REST

3REST 其实就是为分布式信息系统打造 你能想到一个适合所有这些约束(包括按需编码概念)软件应用程序示例? 确实存在这样系统,而且你肯定听说过。 它被称为万维网。...他澄清说: ……如果应用程序状态引擎(以及 API)不是由超文本驱动,则它不能是 RESTful ,也不能是 REST API。...由于客户端应用程序不会被写入静态接口,因此 API 本身可以自由地动态更改形态,以响应用户输入、算法甚至是人工智能。而且,设计渐进式发展 API(与重大更改和版本控制相关问题更少)会容易很多。...尽管 REST 可以很好地表达万维网基本架构原理,但是它不能很好地适用恰好通过这个网络交付各个服务设计理念。 我们不会再说什么 RESTful 网站了,对?...这种事物正处于 Web 标准开发前沿。如果超媒体 API 进入主流,并不会取代现有的 API 设计约定,但它们将催生全新类别的数据服务。我们拭目以待。

65710

用ASP.NET Core 2.0 建立规范 REST API -- 预备知识

RESTful API 最关心有这几方面: 性能, 可扩展性, 简洁性, 互操作性, 通讯可见性, 组件便携性和可靠性. 这些方面被封装在REST6个原则里, 它们是:  1....统一接口: 这里分为4点, 他们是: 资源标识符(URI), 资源操作(也就是方法Method, HTTP动词), 自描述响应(可以认为是媒体类型Media-Type), 以及状态管理(超媒体作为应用状态引擎...只有满足了这6个原则系统才可以真正称得上是RESTful, 其实大部分系统RESTful API并不是RESTful, 但这样并不代表这些API就不好, 利弊需要开发人员去衡量...., 但并不是直接支持RESTful Web API....还有其它方式创建Controller,按约定类名以Controller结尾POCO类也会被认为是Controller,例如: ?

1.7K00
  • 前端要知道RESTful API架构风格

    自己在写Node服务时你遇到如何定义好接口问题?下面介绍一种API架构风格,也是目前主流API设计风格,你或许一直在使用。 ? RESTful API 示例 REST是什么?...因为如果我们对数据进行增删改查那么数据就变了,在变化每一个阶段都是一种状态,从状态1变到状态2等等,用状态来描述数据更好显示了数据是会变化会被我我们所修改。 Transfer:数据传输。...自描述消息。每个请求或响应必须提供足够信息让接受者理解,这些消息是指比如媒体类型、HTTP方法、是否缓存 超媒体作为应用状态引擎。...如果请求是错,那么应用尽量把错误信息给返回,并按照一个规范通用格式 安全 HTTPS 鉴权 限流 开发者友好 文档 超媒体 RESTful API 示例 下面是我是真实API截图,用Swagger...用查询字符串或HTTP首部进行内容协商,指定返回结果数据格式。 及时更新文档,每个接口都有对应说明。 你公司使用RESTful API如果不是可以考虑辞职了,太落伍了!

    90330

    我所理解RESTful Web API

    该书中介绍了一些采用ROA架构Web服务应该具备基本特征,它们可以指导我们如果构架具体RESTful Web API。...对于GET,相应所有人对已经非常熟悉了,它用于获取所需资源,服务器一般讲对应资源置于响应主体部分返回给客户端。 HEAD和OPTIONS相对少见。...服务器一般讲对应资源元数据置于响应报头集合返回给客户端,这样响应一般不具有主体部分。...对于请求提交资源,我们一般利用请求Content-Type报头携带媒体类型来判断其采用表示类型。对于响应资源表示类型识别,可以采用如下两种方式。...Web API只会定义根据具体页码数据查询定义相关操作,当前返回数据页码由客户端来维护。 第一种貌似很“智能”,其实就是一种画蛇添足作法,因为破坏了Web API无状态性。

    1K70

    RPC 与 REST 介绍及比较

    RMI实际上是Java语言RPC实现,允许方法返回 Java 对象以及基本数据类型,适合用于JAVA语言构建不同系统间调用。         ...REST(Representational state transfer), 表现层状态转移 在设计API时,使用路径定位资源,方法定义操作,通过Content-Type和Accept来协商资源类型...RESTful即实现REST设计风格一种架构,如RESTful APIREST设计风格API)     (5) 风格         利用HTTP方法让接口统一化         利用HTTP...设计API时,决定使用哪种形式,得先考虑所设计API会被谁使用:     如果是关注于对象和资源项目,需要对接各种不同端和使用者,需要便于使用和阅读文档,那么适合使用REST     如果是面向行为动作...RESTful API和RPC是两种完全不同概念东西,是没法放在一起比较如果硬要将它俩比较,我认为RESTful是RPC一种实现,即RPC包括RESTful API,但RPC不等于RESTful

    59310

    13 个设计 REST API 最佳实践

    不要返回纯文本 虽然返回 JSON 数据格式数据不是 REST 架构规范强制限定,但大多 REST API 都遵循这条准则。...在响应返回错误详情 当 API 服务器处理错误时,如果能够在返回 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...你可能知道,HTTP 中你可以返回带有 200 状态码错误响应,但这是十分糟糕。不要这么做,你应当返回返回错误类型相一致具有一定含义状态码。...当然可以,不过让我讲一个故事: 我曾经使用过一个 API,对于返回所有响应状态码均是 200 OK,同时通过响应数据中 status 字段来表示当前请求是否成功,比如: {...比如,如果一个 POST 类型端点返回 201 Created,那么所有的 POST 端点都应返回同样状态码。这样做好处在于,调用者无需在意端点返回状态码取决于某种特殊条件,也就形成了一致性。

    3.6K20

    赏心悦目的RESTful API这样来设计!

    我们来了解一下 如何设计和开发一个高可用 REST APIs 网上一直有关于"最好Restful API设计"争论,何为最好,至今没有一个官方指导。...针对这个问题,答案依旧没有统一标准,如果多个版本API版本返回数据结果结构一样,那没必要区分版本,如果结构已经发生变化,而且要向下兼容,那版本号是很好区分方式,而且通过 URL 加版本方式可以更好发现资源...sort=score_desc 按照学生分数降序进行排序 上述所有的方式我们都可以做到"望 URL 知意",这就是好设计 返回结果 RESTful API 返回结果也是设计环节中重要一环 响应数据格式...producer 类型情况存在 响应状态码 很多后端开发人员可能受开发框架所限,或者返回数据封装形式不够好,经常会给前端人员不是很友好 HTTP 状态码,比如 response 有 error,却给出...API 文档 Swagger是一种广泛使用工具来用来记录与呈现 REST API提供了一种探索特定 API 使用方法,因此允许开发人员理解底层语义行为。

    1.4K10

    前后端分离开发,RESTful 接口如何设计

    无状态(stateless)这个术语至关重要,使得应用程序可以用不可知方式进行通信。RESTful API 通过统一资源定位符地址(URL)公开服务。URL 名称将资源区分为接受内容或返回内容。...开始把服务发布到某个地方,然后开始与 REST 服务进行交互。返回内容可能是 XML、JSON 格式,或者更确切地说是像 Atom 或自定义 MIME 类型等超媒体格式。...如果不全面深入理解 RESTful 架构实现,就很容易误解 REST 实践本意。...第一次请求无论成功与否,资源都应该返回204(无指定内容)。对之前已删除资源或不存在资源可能需要一些额外处理,两种情况都应该返回404。...专注于为客户端和服务器生成一些非常干净、强大 API

    2.5K01

    REST 和 SOAP 协议有什么区别?

    举个例子一个网站会根据你搜索条件,返回航班、酒店或租车最优惠 信息。网站不会从数据库中检索这些数据,而是通过向专门提供航班、酒店等服务 API 发送请求来获取数据。...本文将探讨这两种标准之间差异,以及两种协议该如何选择。## REST 和 SOAP 异同REST 和 SOAP 之间共同点是什么,为什么它们经常被拿来比较?...* REST 作为一种架构风格,对 Web API 设计有一定限制。REST 标准要求被视为 “RESTful Web API 必须遵守 REST 约束。...**REST 是“表征性状态传输”(Representational State Transfer)缩写,是一种特定 API 构建风格,通过这种风格进行约束 API认为是 RESTful AP...在响应中,Body 部分包含 API 响应以及所请求信息。* **Fault(错误):** 可选部分。如果 SOAP API 无法处理请求,它将发送在此处定义错误消息。

    12300

    如何设计好RESTful API

    我们来了解一下 如何设计和开发一个高可用 REST APIs 网上一直有关于"最好Restful API设计"争论,何为最好,至今没有一个官方指导。...针对这个问题,答案依旧没有统一标准,如果多个版本API版本返回数据结果结构一样,那没必要区分版本,如果结构已经发生变化,而且要向下兼容,那版本号是很好区分方式,而且通过 URL 加版本方式可以更好发现资源...sort=score_desc 按照学生分数降序进行排序 上述所有的方式我们都可以做到"望 URL 知意",这就是好设计 返回结果 RESTful API 返回结果也是设计环节中重要一环 响应数据格式...producer 类型情况存在 响应状态码 很多后端开发人员可能受开发框架所限,或者返回数据封装形式不够好,经常会给前端人员不是很友好 HTTP 状态码,比如 response 有 error,却给出...API 文档 Swagger是一种广泛使用工具来用来记录与呈现 REST API提供了一种探索特定 API 使用方法,因此允许开发人员理解底层语义行为。

    1.6K20

    架构师该如何为应用选择合适API

    它是一个基于XML协议,由三部分组成: 一个信封,定义了消息结构以及如何处理 一组用于表达应用程序定义数据类型实例编码规则 表示过程调用和响应约定 SOAP具有三个主要特征: 可扩展性(安全性和...RESTFul风格API所有的操作都是一个动词,对应HTTP请求一种类型。每一个操作都定义了对操作资源某种行为。...REST是同步服务,如果需要可能要引入回调机制。例如Webhook。 REST只提供客户端调用服务器选项,不支持服务器端发起请求。 于是新API类型会出现来解决这些问题。...与RESTful API相比,这提供了更流畅客户端体验,后者可能要求客户端对多个数据进行多次请求,并在数据返回后进行操作。...与REST相比,gRPC另一个显著改进是使用HTTP 2作为其传输协议。REST使用HTTP 1.1基本上是一个请求-响应模型。gRPC利用HTTP 2双向通信功能以及传统响应请求结构。

    1.6K20

    什么是REST API

    API(应用程序接口)通过为系统之间对话提供接口来帮助这种类型通信。REST只是一种被广泛采纳API风格,我们用它来与内部和外部以一种一致和可预测方式进行沟通。...amount=1&category=18[4] 这是一个作为RESTful网络服务实现公共API遵循REST公约)。你浏览器将展示一个单独JSON格式问答问题,并附有答案。...REST API挑战 REST成功很大程度上归功于简单性。开发人员可以自由地实现RESTful API,但这可能会导致进一步挑战。...多个请求和不必要数据 RESTful APIs受到其实现限制。响应可能包含比你需要更多数据,或者需要进一步请求来访问所有数据。 考虑一个RESTful API提供对作者和书籍数据访问。...REST难题导致Facebook创建了GraphQL--一种网络服务查询语言。把看作是网络服务SQL:一个单一请求定义了你所需要数据以及你希望如何返回

    4.3K20

    REST API 设计最佳实践:如何构建、设计和使用 API

    不要返回纯文本 尽管并非强制规定,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串响应体是不够好。您还应该指定Content-Type标头。...在响应体中返回错误详情 当API服务器处理错误时,将错误详细信息包含在JSON主体中可以帮助使用者进行调试,这是是非常方便如果您还能说明哪些字段受到了错误影响,那就更好了!...特别关注 HTTP 状态码 这一点非常重要,如果你从这篇文章中只记住一件事,那可能就是了。 你API最糟糕事情莫过于返回一个带有200 OK状态码错误响应。...这种设计真的很糟糕,因为破坏了API与其使用者之间信任关系,你会担心API可能在欺骗你。所有这些都极不符合RESTful风格。那么你应该怎么做呢?...通过过滤,消费者可以指定返回项目应具有哪些参数(或属性)。分页允许用户逐步获取数据集。最简单类型分页就是按页码进行分页,由page和page size确定。

    42140

    如何使用Spring和Java配置构建一个REST API

    认识基于SpringREST Spring框架支持两种创建RESTful服务方法: 使用MVC ModelAndView 使用HTTP消息转换器 ModelAndView这个方法比较老、文档也比较完善...REST情况下,如果检测到Jackson和JAXB 2在类路径上存在,就会自动创建和注册默认JSON和XML converter。...@RequestBody将方法参数绑定到HTTP请求体,而@ResponseBody对响应返回类型做同样事情。 它们还确保使用正确HTTP转换器对资源进行编排和反编排。...未映射请求 如果Spring MVC接收到没有映射请求,则认为不允许该请求,并将405 METHOD NOT ALLOWED返回给客户端。...API一部分,因此应该只在对应于REST适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。

    2.1K30

    DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

    对于REST这种面向资源架构风格,有人提出一种全新结构理念,即:面向资源架构(ROA:Resource Oriented Architecture)       另外还有其他两种,简单了解...2.6 过滤信息(filtering,或称查询参数)       如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。       下面是一些常见参数。 ?...2.9 Hypermedia API,提供链接       RESTful API最好做到Hypermedia,即返回结果中提供链接,API 使用者未必知道,URL 是怎么设计。...rel表示这个API与当前网址关系(collection关系,并给出该collection网址),href表示API路径,title表示API标题,type表示返回类型。...return HttpResponse(json.dumps(ret,ensure_ascii=False)) #ensure_ascii=False是告诉json不要对中文进行编码,不然返回给前端数据中如果有中文的话会被编码成

    2.5K20

    RESTful 架构基础

    无状态(stateless)这个术语至关重要,使得应用程序可以用不可知方式进行通信。RESTful API 通过统一资源定位符地址(URL)公开服务。URL 名称将资源区分为接受内容或返回内容。...开始把服务发布到某个地方,然后开始与 REST 服务进行交互。返回内容可能是 XML、JSON 格式,或者更确切地说是像 Atom 或自定义 MIME 类型等超媒体格式。...如果不全面深入理解 RESTful 架构实现,就很容易误解 REST 实践本意。...第一次请求无论成功与否,资源都应该返回204(无指定内容)。对之前已删除资源或不存在资源可能需要一些额外处理,两种情况都应该返回404。...专注于为客户端和服务器生成一些非常干净、强大 API

    78120

    RestFul架构基础

    无状态(stateless)这个术语至关重要,使得应用程序可以用不可知方式进行通信。RESTful API 通过统一资源定位符地址(URL)公开服务。URL 名称将资源区分为接受内容或返回内容。...开始把服务发布到某个地方,然后开始与 REST 服务进行交互。返回内容可能是 XML、JSON 格式,或者更确切地说是像 Atom 或自定义 MIME 类型等超媒体格式。...如果不全面深入理解 RESTful 架构实现,就很容易误解 REST 实践本意。...第一次请求无论成功与否,资源都应该返回204(无指定内容)。对之前已删除资源或不存在资源可能需要一些额外处理,两种情况都应该返回404。...专注于为客户端和服务器生成一些非常干净、强大 API

    63010

    RESTful 架构基础

    无状态(stateless)这个术语至关重要,使得应用程序可以用不可知方式进行通信。RESTful API 通过统一资源定位符地址(URL)公开服务。URL 名称将资源区分为接受内容或返回内容。...开始把服务发布到某个地方,然后开始与 REST 服务进行交互。返回内容可能是 XML、JSON 格式,或者更确切地说是像 Atom 或自定义 MIME 类型等超媒体格式。...如果不全面深入理解 RESTful 架构实现,就很容易误解 REST 实践本意。...第一次请求无论成功与否,资源都应该返回204(无指定内容)。对之前已删除资源或不存在资源可能需要一些额外处理,两种情况都应该返回404。...专注于为客户端和服务器生成一些非常干净、强大 API

    94030

    单个资源

    项目开始提升到Richardson成熟度3级高度,尽管暂时还没有实现REST所有的约束,但是已经比较RESTful了。...重要性在于打破了客户端和服务器之间严格契约,使得客户端可以更加智能和自适应,而 REST 服务本身演化和更新也变得更加容易。...有两种办法: 静态类型方案: 需要基类(包含link)和包装类, 也就是返回资源里面都含有link, 通过继承于同一个基类来实现....例如之前做翻页时候,总页数,当前页数等数据都放在了Header里面;而下一页和上一页链接则放在了响应body里面。那这两个链接应该是资源一部分?...所以我们返回content-type类型是错误,而且还会导致API消费者无法从content-type类型来正确解析响应,也就是说我没有告诉API消费者如何来处理这个结果。

    49410

    为什么我使用 GraphQL 而放弃 REST API

    至此,我再也无法回过头来享受使用 REST 工作了。 REST 有什么问题? 每个 REST API 都是独特 公平地说,REST 甚至不是一个标准。...还有一些东西乍一看是 RESTful ,但如果你仔细看,就不是那么像了:Dropbox HTTP API。...对于大多数服务器来说,在一次响应一个集合中返回所有项是一个繁重操作。如果再乘以在线用户数量,就会产生很大 AWS 账单。显而易见解决方案:只返回集合子集。 分页相对简单。...一个简单例子 GraphQL 模式定义了可用于在服务器和客户端之间通信类型。有两种特殊类型,它们同时也是 GraphQL 核心概念:Query和Mutation。...客户端库可以很容易地将 GraphQL 响应自动解包为所需类型对象实例,因为从模式和查询可以提前知道响应形状。 GraphQL 是个时髦东西,是一种时尚,对

    2.3K30
    领券