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

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

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

1.7K00

我们应该重新定义REST吗?

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

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

    前端要知道的RESTful API架构风格

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

    91930

    我所理解的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 API(REST设计风格的API)     (5) 风格         利用HTTP方法让接口统一化         利用HTTP...设计API时,决定使用哪种形式,得先考虑所设计的API将会被谁使用:     如果是关注于对象和资源的项目,需要对接各种不同的端和使用者,需要便于使用和阅读文档,那么适合使用REST     如果是面向行为动作...RESTful API和RPC是两种完全不同概念的东西,是没法放在一起比较的,如果硬要将它俩比较,我认为RESTful是RPC的一种实现,即RPC包括RESTful API,但RPC不等于RESTful

    72810

    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

    ⚡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 无法处理请求,它将发送在此处定义的错误消息。

    15100

    如何设计好的RESTful API

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

    1.7K20

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

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

    2.5K01

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

    45340

    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

    什么是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

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

    认识基于Spring的REST 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

    RESTful 架构基础

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

    78820

    RestFul架构基础

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

    63910

    RESTful 架构基础

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

    94130

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

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

    2.3K30

    单个资源

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

    49710
    领券