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

安息吧 REST API,GraphQL 长存

在 REST API 中,没有客户端请求语言。客户端无法控制服务器返回的数据。没有任何语言可以这样做。更确切地说,可用于客户端的语言非常有限。...由于我们希望在单次往返中请求我们所需的数据,所以我们需要一种表达我们对服务器端完整数据需求的方式。我们使用 GraphQL 查询来做: GET or POST - /graphql?...一个 GraphQL 查询只是一个字符串,但它必须包括我们需要的所有数据。这就是声明式的好处。 在英语中,我们如何声明我们的数据需求:我们需要一个人物的姓名,出生年份,星球名称和所有电影名。...客户端可以要求服务器只执行使用查询唯一标识符预先批准的查询。据说 Facebook 采用的就是这种方法。 认证和授权是在使用 GraphQL 时需要考虑的其他问题。...我们只需把它当作可以在客户端和我们的实际数据服务(或多个服务)之间放置的一个中间层。 然后将认证和授权视为另一层。GraphQL 在实际的身份验证或授权逻辑的实现中并无用处,因为它的意义并不在于此。

3.4K30

flask 应用程序编程接口(API)最后一节

注意一下last_seen字段的生成。对于日期和时间字段,我将使用ISO 8601格式,Python中的datetime对象可以通过isoformat()方法生成这样格式的字符串。...当一个API需要返回一个错误时,它需要是一个“机器友好”的错误类型,踩客户端可以轻松解释这些错误。因此,我同样设计错误的表示为一个JSON。...查询对象的get_or_404()方法如何触发404错误(我将在以后向您演示如何扩展错误处理,踩返回这些错误JSON格式) )。...第二个复杂因素是客户端可能提供与目前绝对相同的值,所以在检查用户名或电子邮件是否被采用之前,我需要确保其与当前的不同。如果任何验证检查失败,那么我会像之前一样返回400错误给客户端。...我还添加了token_expiration替换,它保存了令牌过期的日期和时间。时间有效,以免成为安全风险。 我为它创建了一种方法来处理这些令牌。get_token()方法为用户返回一个令牌。

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

    第 9 篇:实现分类、标签、归档日期接口

    其实我们可以简单地将 action 装饰的方法看作是一个视图函数的实现,因此可以看到方法传入的第一个参数为 request 请求对象,函数体就是这个视图函数需要执行的逻辑,显然,方法最终必须要返回一个...而这个接口中只需要序列化一个时间字段(类型为 Python 标准库中的 datetime.date),所以没必要单独定义一个序列化器了,直接拿 django-rest-framework 提供的用于序列化时间类型的...对于这样的场景,我们可以在请求 API 时加上查询参数,django-rest-framework 解析查询参数,然后从全部文章列表中过滤出查询所指定的文章列表再返回。...这在 RESTful API 的设计中肯定是会遇到的,因此第三方库 django-filter 帮我们实现了上述所说的查询过滤功能,而且和 django-rest-framework 有很好的集成,我们可以在...归档日期下的文章列表,我们设计的接口传递 2 个查询参数:年份和月份。

    3.6K30

    RESTful架构详解 转

    他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通 信的架构。REST指的是一组架构约束条件和原则。”...例如为我的博文增加一个java的分类,生成的路径就是分类名/categories/java,那么就可以采用PUT方法。...如何处理不支持的表述格式 当服务器不支持所请求的表述格式,那么应该怎么办?若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。...又例如下面这个例子,创建订单后通过链接引导客户端如何去付款。 ? 上面的例子展示了如何使用超媒体来增强资源的连通性。很多人在设计RESTful架构时,使用很多时间来寻找漂亮的URI,而忽略了超媒体。...这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。 在多次请求中,同一客户端也不再需要依赖于同一服务器,方便实现高可扩展和高可用性的服务端。

    1.4K31

    Retrofit解析1之前哨站——理解RESTful

    WebService:一个貌似很久远的概念,有一套它的理论,基于Web的服务提供者 四、REST关键原则 由于REST定义了应该如何正确的使用Web标准,例如HTTP和URI。...当这样设计的时候,很多人会怀疑这样是否会直接向外面暴露你的数据库记录。但是其实它和隐藏现实细节之间没有任何冲突,通常值得被URI标识的事物——资源——要比数据库记录要抽象的多。...4、资源多重表述 到目前为止我们忽略了一个复杂的问题:客户端程序如何知道怎么处理检索的导数据,比如GET或者POST请求的结果?其实HTTP采取的方式是允许数据处理和操作调用之间的关系分离的。...在实际应用中,资源多重表述还有其他的好处:如果你为你的资源提供HTML和XML两种表述方式,那这些资源不仅可以被你的应用所用,还可以被任意标准Web浏览器所用。...我会建议在设计初期一定要在资源的定义上多花功夫,抽象出适合业务发展的资源。也就是说一开始要把产品的RESTful风格定义下来,后面的扩展都可以基于这样的风格延续下去。

    84341

    透析SOA、RPC、SOAP、REST、ICE、ESB模型发展史

    客户端可以缓存数据以改进性能。 在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。...使用的是标准的 HTTP 方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。...REST 简化了客户端和服务器的实现。 在 RPC 样式的架构中,关注点在于方法,而在 REST 样式的架构中,关注点在于资源 —— 将使用标准方法检索并操作信息片段(使用表示的形式)。...至于这个协议是Socket、是HTTP还是别的什么并不重要; RPC中的主体都是动作,是个动词,表示我要做什么。  而REST则不然,它的URL主体是资源,是个名词。...和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。

    2.4K31

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

    它定义了可以进行的调用或请求的类型,如何进行调用,应使用的数据格式,遵循的约定等。它还可以提供扩展机制,以便用户可以以各种方式扩展现有功能。在不同程度上。...API可以是完全定制的,特定于组件,也可以基于行业标准进行设计以确保互操作性。有些API必须记录在案,而其它API则经过设计,以便可以“查询”它们以确定支持的功能。...它是一个基于XML的协议,由三部分组成: 一个信封,它定义了消息结构以及如何处理它 一组用于表达应用程序定义的数据类型实例的编码规则 表示过程调用和响应的约定 SOAP具有三个主要特征: 可扩展性(安全性和...让我们研究一下GraphQL的设计原则。 查询是分层结构的,具有分层和嵌套字段,查询与响应数据一对一匹配。查询和响应的形状像树,可以查询每个项目的其他嵌套字段。...该结构以产品为中心,着重于前端希望如何接收数据,并构建交付所需的运行时。这样一来,就可以向后端请求一个所需的所有数据,然后让服务器根据GraphQL的规范从不同的端点获取数据。

    2.2K20

    ​你回去了解一下RESTful风格

    可以把它理解为一种软件架构风格或设计风格,而不是一个标准。 简单来说,RESTful风格就是把请求参数变成请求路径的一种风格。 例如,传统的URL请求格式为:http://......RESTful风格在HTIP请求中,使用put、delete、post和get方式分别对应添加、删除、修改和查询的操作。不过目前国内开发,还是只使用post和get方式来进行增删改查操作。...例如为我的博文增加一个java的分类,生成的路径就是分类名/categories/java,那么就可以采用PUT方法。...例如rails框架就支持通过隐藏参数_method=DELETE来传递真实的请求方法, 而像Backbone这样的客户端MVC框架则允许传递_method传输和设置X-HTTP-Method-Override...资源的表述包括数据和描述数据的元数据,例如,HTTP头"Content-Type" 就是这样一个元数据属性。 那么客户端如何知道服务端提供哪种表述形式呢?

    1.6K10

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

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...如果进行 GET 请求时被打断,由于幂等性,客户端可以再次发起请求。这点非常重要。在设计良好的基础结构中,客户端可以从任意应用程序发起请求。...如果采用 POST 查询,可以考虑采用 GET 请求,后者支持缓存。你可以与其他人分享这个链接。 4.3 PUT 由于 HTML 表单目前还不支持 PUT,许多开发人员基本上会忽略 PUT 动词。...它支持可重用模式和特性,通过模式和特性实现功能 API 设计的标准化。...它支持 Markdown 格式的 API 文档,可以围绕设计过程进行社交,并且支持模拟数据的托管实现,以便于在 API 实现之前对其进行测试。

    3.1K01

    构建强大的RESTful API:@RestController与@Controller的对比与应用

    URL作为资源标识符:每个资源都由一个唯一的URL标识符来表示。通过URL,客户端可以访问和操作资源。 使用HTTP状态码:HTTP状态码用于指示请求的成功或失败以及失败的原因。...总之,RESTful API是一种使用HTTP协议和REST原则来设计和构建的API。它的目标是使Web服务更加简单、易于理解和可伸缩。...它表示这个类的每个方法都会返回一个对象,而不是一个视图,这些对象会被自动序列化为JSON或XML,然后发送给客户端。...在sayHello方法中,我们使用了Model对象来传递数据到视图。 接下来,创建一个Thymeleaf模板,假设模板文件名为hello.html,并放置在适当的模板目录中: 这个示例演示了如何结合Spring MVC的注解和Thymeleaf模板引擎来创建一个简单的Web应用程序。确保根据您的项目需要进行配置和扩展。

    42110

    RESTful 架构详解

    他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。"...例如为我的博文增加一个java的分类,生成的路径就是分类名/categories/java,那么就可以采用PUT方法。...如何处理不支持的表述格式 当服务器不支持所请求的表述格式,那么应该怎么办?若服务器不支持,它应该返回一个HTTP 406响应,表示拒绝处理该请求。...又例如下面这个例子,创建订单后通过链接引导客户端如何去付款。 ? 上面的例子展示了如何使用超媒体来增强资源的连通性。很多人在设计RESTful架构时,使用很多时间来寻找漂亮的URI,而忽略了超媒体。...这种无状态通信原则,使得服务端和中介能够理解独立的请求和响应。 在多次请求中,同一客户端也不再需要依赖于同一服务器,方便实现高可扩展和高可用性的服务端。

    1.4K20

    解读GraphQL|洞见

    对我来说,技术雷达中通常有两种典型技术: 第一种,像Apache Kafka这样的,一看就感觉很牛,然后哇地赞叹一下,但因为离项目场景太远,大概看看热闹就过去了。...我们可以列举REST问题的几个表现——之所以用“表现”来形容,是因为它们都指向同一个问题——在为客户端实现RESTful API过程中性能、页面等等导致的折中设计和REST本身可扩展性之间不可调和的矛盾...如果我们遵循REST的风格,我们就要将各种资源分门别类用不同的API来表示。 而在客户端中我们经常需要一次请求多种资源。这时候我们就要编写许多API来为不同的页面合并这些API。...3.2 在现代场景中难于维护 虽然REST的目标是易于维护和扩展,但在Web前端/客户端领域,它的表现并没有想象得那么好。我们经常说最明显的Code smell就是重复。...但是由于整个请求还是在一次HTTP请求中完成的,理论上我们也有Batch为一个查询的能力,就像许多ORM有一些惰性特性,可以将多个查询过滤语句合并成一条查询一样。 ?

    1.3K70

    为什么GraphQL是API的未来

    REST 有太多的端点 但是这有什么问题呢?假设我们正在开发一个像 Facebook 这样的大型社交媒体应用,最终会得到很多端点,这意味着开发和维护这些 API 将花费更多的时间和精力。...这些在 GraphQL 中并不需要,因为你可以通过添加或删除类型来改进 API。 在GraphQL中,你所需要做的就是写新代码。可以编写新类型、查询和修改,而无需维护其他版本的API。...GraphQL 只需要一个端点,通过它我们可以在单个请求中获得尽可能多的数据。基本上 GraphQL 会将你的所有查询、修改和订阅封装在一个端点中,并供你调用。...它改善了你的开发周期,因为你不必向两个不同的资源发出请求来获取数据。此外,当我们开发一个大型的应用时,不必再像 REST 一样获得大量端点和代码。...在本系列的下一篇教程中,我将深入研究 GraphQL,展示 GraphQL 如何与类型一起工作,并创建我们的第一个查询和修改。 所以请继续关注并希望在下一个教程中见到你!

    2K30

    RESTful 架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...如果进行 GET 请求时被打断,由于幂等性,客户端可以再次发起请求。这点非常重要。在设计良好的基础结构中,客户端可以从任意应用程序发起请求。...如果采用 POST 查询,可以考虑采用 GET 请求,后者支持缓存。你可以与其他人分享这个链接。 4.3 PUT 由于 HTML 表单目前还不支持 PUT,许多开发人员基本上会忽略 PUT 动词。...它支持可重用模式和特性,通过模式和特性实现功能 API 设计的标准化。...它支持 Markdown 格式的 API 文档,可以围绕设计过程进行社交,并且支持模拟数据的托管实现,以便于在 API 实现之前对其进行测试。

    1.1K20

    RestFul架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...如果进行 GET 请求时被打断,由于幂等性,客户端可以再次发起请求。这点非常重要。在设计良好的基础结构中,客户端可以从任意应用程序发起请求。...如果采用 POST 查询,可以考虑采用 GET 请求,后者支持缓存。你可以与其他人分享这个链接。 4.3 PUT 由于 HTML 表单目前还不支持 PUT,许多开发人员基本上会忽略 PUT 动词。...它支持可重用模式和特性,通过模式和特性实现功能 API 设计的标准化。...它支持 Markdown 格式的 API 文档,可以围绕设计过程进行社交,并且支持模拟数据的托管实现,以便于在 API 实现之前对其进行测试。

    92910

    RESTful 架构基础

    客户端在需要时发出 GET 请求获取指定资源。客户端可以在本地缓存请求结果,服务器可以在远程缓存结果,系统的中间层可以在请求链路中间缓存结果。这是一个与具体应用程序无关的特性,可以加入系统设计中。...如果进行 GET 请求时被打断,由于幂等性,客户端可以再次发起请求。这点非常重要。在设计良好的基础结构中,客户端可以从任意应用程序发起请求。...如果采用 POST 查询,可以考虑采用 GET 请求,后者支持缓存。你可以与其他人分享这个链接。 4.3 PUT 由于 HTML 表单目前还不支持 PUT,许多开发人员基本上会忽略 PUT 动词。...它支持可重用模式和特性,通过模式和特性实现功能 API 设计的标准化。...它支持 Markdown 格式的 API 文档,可以围绕设计过程进行社交,并且支持模拟数据的托管实现,以便于在 API 实现之前对其进行测试。

    1.2K30

    RESTful风格的应用

    其实这是rest给我们提出来的一个设计理念,在web环境以URL的方式,来进行资源的传递。那么基于这种REST的理念,注意,是理念,不是具体的实现。...下面通过一个图来进行解释: 在这个图的最左侧,我们的客户端已经不再是标准的浏览器了,而是包含了像iPhone和安卓系统里所运行的小程序和app,都是可以作为客户端来使用的。...上面定义get请求,我们返回的就是查询的结果。 运行结果如下: html可以通过ajax技术来使用这个json数据。下面继续来开发restful。...返回刚才的工程,在webapp目录下放入jquery.js 文件。等下要用到它来完成Ajax的请求。然后创建一个标准的html页面,这里我叫做index.html。index.html编写如下代码?...路径变量 我们见过 POST/article/1 这样的一种uri的书写形式,表示创建一个ID值为1的文章。像这种url,id这个位置其实是灵活的,是变化的,这里可能是1,之后就是3等了。

    96030

    常用数据库有哪些?

    拉力·艾立森奉行的经营哲学是“竞争不过它,我就买了它”。竞争不过,说明竞争对手的产品更具优势,所以收购它,从而变成自己的优势。...另外,也可以从这个网站下载数据库的源代码。对于非数据库型的 SaaS 云提供商来说,云端采用 MariaDB 是最好的选择,而且可以轻松搭建数据库集群。 2....支持最新的 SQL 2008 标准的数据类型,包括整型、数字型、字符型、布尔型、可变字符型、日期型、时间戳、自增长型以及各种二进制对象(如图片、声音和视频等)。...量身定制化的类-SQL 语言。 允许给序列数据附加标签来创建索引,以便快速高效查询。 通过定义策略轻松实现自动失效过时的数据。 基于 Web 的管理界面。...Cache 数据库在欧美的医疗系统使用最为普遍,被医疗界公认为首选的数据库,国内中山大学第三附属医院、深圳南山医院、北京安贞医院等也采用 Cache 数据库 9.

    7.3K10

    【软件架构设计-业务逻辑和技术分离】

    关于架构这个概念很难给出一个明确的定义,也没有一个标准的定义。 硬是要给一个概述,我认为架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。...在 COLA 的设计中,我们充分汲取了经典架构的优秀思想。除此之外,我们补充了规范设计和扩展设计,并且使用 Archetype 的方式,将架构固化下来,以便可以快速的在开发中使用。...其每一层的作用范围和含义如下: 1)展现层(Presentation Layer) 负责以 Rest 的格式接受 Web 请求,然后将请求路由给 Application 层执行,并返回视图模型(View...在具体实现中,我们使用 BizCode 来表示业务身份,其中 BizCode 采用类似 Java 包名命名空间的方式。...最终形成如下图所示的组件关系。 换一个视角,从 COLA 应用处理响应一个请求的过程来看。COLA 使用了 CQRS 来分离命令和查询的职责,使用扩展点和元数据来提升应用的扩展性。

    33010

    Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!

    而 RESTful API 是一种基于REST架构风格设计的API。它使用统一的接口和状态无关的通信方式来实现各种网络应用。...这种设计风格使得RESTful API具有简单、灵活、可扩展和易于理解的特点,因此在Web开发中得到了广泛的应用。...事实上,我们可以使用任何一个框架都可以实现符合restful规范的API接口。 1、数据安全 RESTful API 链接一般都采用https协议进行传输,以提高数据交互过程中的安全性。...path('api/', include('rest_framework.urls')), ] 3、创建一个简单的API视图 现在,我们来创建一个简单的API视图。...比如:更丰富的类视图、身份认证与权限管理等,后续小圈会抽空根据案例为大家带来更精细化的DRF学习教程。现在我们可以通过深入研究DRF文档和示例,更好地利用这个强大的工具。

    1K20
    领券