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

REST API和GraphQL API比较

典型 REST 场景,请求/响应如下所示: // HTTP REQUEST GET api/students/1 || api/students?...动图 ) GraphQL 和 REST 之间进行选择时要考虑事项 安全 REST API 使用 HTTP,允许使用传输层安全性进行加密,并提供多种 API 身份验证选项。...GraphQL 安全控制不如 REST API 安全控制发达。为了利用 GraphQL 数据验证等当前功能,开发人员必须设计新身份验证和授权技术。...可用性 REST API 使用 URI 和 HTTP 技术,这使得 API 很难预测联系新端点时会发生什么。REST 缺少指定版本控制要求允许提供者采用他们自己方法。...与 REST API 相比,这是一个明显区别, REST API ,每个 状态代码都指向某种类型响应。

39010

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

学习 HTTP 基础知识 如果你想构建一个设计良好REST API,那么你必须了解HTTP协议基本知识。我坚信这将帮助你做出正确设计选择。...Mozilla Developer Network文档上关于HTTP概述是一个相当全面的参考资料,尽管如此,REST API设计方面,以下是将HTTP应用于RESTful设计简要说明: HTTP具有动词...了解401未授权和403禁止之间区别 如果我每看到一次开发人员甚至有经验架构师搞砸这个问题就能得到一个25美分硬币……处理REST API安全错误时,很容易弄混错误是与身份验证还是授权(又称权限...根据不同情况,以下是我备忘单,用于了解我正在处理什么问题: 消费者没有提供身份验证凭据吗?他们SSO令牌是否无效/超时? 401 未授权。...Node,Restify似乎也是一个很好选择,尽管我还没有尝试过。我强烈建议您试一试这些框架,它们将帮助您构建美观、优雅且设计精良REST API

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

13 个设计 REST API 最佳实践

避免 URI 中使用动词 如果你理解了第 1 条最佳实践所传达意思,那么你现在就会明白不要将动词放入 REST API URI 。...分清 401 和 403 当我们遇到 API 关于安全错误提示时,很容易混淆这两个不同类型错误,认证和授权(比如权限相关)—— 老实讲,我自己也经常搞混。...这里是我自己总结备忘录,它阐述了我如何在实际情况下,区分它们: 用户是否未提供身份验证凭据?认证是否还有效?这种类型错误一般是未认证(401 Unauthorized)。... Python ,我发现最好 API 框架之一是 Falcon。它与 Flask 一样简单,非常高效,十分适合构建 REST API 服务。...总结 我们都应致力于让调用 API 这件事成为一种乐趣。希望本文能使你了解到构建更好 REST API 服务过程,涉及到一些建议和技巧。

3.5K20

什么是REST API

REST API是两个计算机系统web浏览器和服务器中使用HTTP技术进行通信一种方式。 两个或多个系统之间共享数据一直是软件开发一个基本要求。比如说,考虑购买汽车保险。...常见认证选项[15]包括: HTTP基本身份验证[16]。在请求头中传递一个包含base64编码username:password字符串 HTTPAuthorization头。...API身份验证将根据使用上下文而有所不同: 某些情况下,第三方应用程序被视为像任何其他具有特定权利和权限登录用户。例如,一个地图API可以将两点之间方向返回给调用应用程序。...使用CORS来限制客户端对特定域调用。 提供最少功能,也就是不要创建不需要DELETE选项。 验证所有端点URL和body对象。 避免客户端JavaScript暴露API令牌。...最多组成10个/author/{id}请求以获取每个作者详细信息。 这被称为「N+1问题」;必须为父请求每个结果提出N个API请求。

4.2K20

REST 服务安全

如果 REST 服务正在访问机密数据,应该对服务使用身份验证。如果需要为不同用户提供不同级别的访问权限,还要指定端点所需权限。...Web 会话身份验证 — 其中用户名和密码 URL 问号后面指定。 OAuth 2.0 身份验证 - 请参阅以下小节。...如果需要为不同用户提供不同级别的访问权限,请执行以下操作来指定权限:修改规范类以指定使用 REST 服务或 REST 服务特定端点所需权限;然后重新编译。...权限是与资源名称组合权限(例如读取或写入)。使用管理门户: 定义规范类引用资源。定义提供权限集角色。例如,角色可以提供对端点读取访问权限或对不同端点写入访问权限。...指定权限可以为整个 REST 服务指定权限列表,也可以为每个端点指定权限列表。为此:要指定访问服务所需权限,请编辑规范类 OpenAPI XData 块。

89710

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

Fielding和其他REST纯粹主义者对评判一个API是否是REST API有严格规定,但软件行业实际使用引用REST是很常见。...是api.get_users,这是我表示中使用三个链接所需端点名称。...保护这些API端点最明显方法是使用Flask-Login@login_required装饰器,但是这种方法存在一些问题。装饰器检测到未通过身份验证用户时,可以将用户重定向到HTML登录页面。...当API客户端收到401状态码时,它知道它需要向用户询问凭证,但是它是如何实现,服务器不需要关心。 用户模型实现令牌 对于API身份验证需求,我将使用令牌身份验证方案。...这些函数通过装饰器Flask-HTTPAuth中注册,然后认证流程根据需要由插件自动调用。实现如下: app / api / auth.py:基本认证支持。

5K10

Laravel API教程:如何构建和测试RESTful API

PUT动词另一个要求是幂等,在这种情况下,基本上意味着您可以发送该请求1,2或1000次,结果将相同:数据库一个更新资源。...来源百度百科 资源(Resources) 资源将是actions目标,我们文章和用户情况下,他们有自己端点: /articles /users 在这个laravel api教程,资源将在我们数据模型具有...路由和控制器 我们为我们应用程序创建基本端点:创建,检索列表,检索单个,更新和删除。...当您必须返回分页资源列表时很有用。 400: 错误请求。无法通过验证请求标准选项。 401:未经授权 用户需要进行身份验证。 403:禁止 用户已通过身份验证,但没有执行操作权限。...就像注册端点一样,我们可以编辑LoginController(Auth文件夹)来支持我们API认证。

20.3K20

API网关.微服务简介,第2部分

微服务系列这篇文章,我们将讨论API网关以及它们如何帮助我们解决基于微服务架构一些重要问题。我们本系列第一篇文章描述了这些和其他问题。 什么是API网关以及为什么要使用它?...根据特定于每个服务规则,网关将请求路由到所请求微服务或返回错误代码(或更少信息)。大多数网关在将请求传递给后面的微服务时将身份验证信息添加到请求。这允许微服务需要时实现用户特定逻辑。...请求调度 即使正常负载情况下,网关也可以为调度请求提供自定义逻辑。大型体系结构,随着团队工作或生成新微服务实例(例如,由于拓扑更改),会添加和删除内部端点。...传输转换 正如我们本系列第一篇文章中所了解到那样,微服务通常是孤立开发,开发团队选择开发平台时具有很大灵活性。这可能导致微服务返回数据并使用对于网关另一侧客户端不方便传输。...它处理HTTP请求并将它们转发到适当内部端点传输过程执行必要转换)。它处理以下问题: 认证 使用JWT进行身份验证。单个端点处理初始身份验证:/ login。

64420

Django REST Framework-常用权限类型

Django REST Framework是一个用于构建Web API强大框架。其中一个重要特性是提供了多种权限类型来控制用户对API端点访问。...常用权限类型IsAuthenticated:只允许已经验证身份用户访问API端点。IsAdminUser:只允许管理员用户访问API端点。...AllowAny:允许任何用户访问API端点,包括未经身份验证用户。IsAuthenticatedOrReadOnly:允许任何用户读取API端点,但只有已经验证身份用户才能够写入数据。...DjangoModelPermissionsOrAnonReadOnly:如果用户未经身份验证,则允许读取API端点。如果用户已经验证身份,则检查该用户是否具有执行特定操作模型权限。...DjangoObjectPermissionsOrAnonReadOnly:如果用户未经身份验证,则允许读取API端点。如果用户已经验证身份,则检查该用户是否具有执行特定操作模型实例权限。

1.4K20

API 安全测试 31 个 Tips

现代框架鼓励开发人员不了解安全性影响情况下使用批量赋值。使用过程,不要猜测对象属性名,只需找到一个返回所有属性GET端点。...TIP8 测试api时候,虽然REST API是当前最常见API形式,但是我们也还检查一下API是否也支持SOAP。...有时身份验证REST和SOAP API之间共享不同组件完成== SOAP API可能支持JWT TIP9 试图找到BOLA(Broken Object Level Authorization)...HTTP bodies/headers id往往比urlid更容易受到攻击。首先试着关注他们。 TIP10 利用REST可预测特性来查找管理API endpoints!...如果您在生产环境中进行测试,那么很有可能AuthN端点具有抗暴力破解保护。无论如何,DevOps工程师倾向于非生产环境禁用速率限制。

1.6K30

为什么GraphQL是API未来

但是随着应用和 Web 变得越来越复杂,API 也会随着这些变化而发展。 不过 REST 也确实存在很多问题。让我们看看它们是什么: 太多端点 REST 每个资源都由端点表示。...因此,实际程序,我们最终会为这些资源提供大量端点。如果要发出 GET 请求,则需要具有特定参数并特定于该请求端点。如果要发出 POST 请求,则需要该请求另一个端点。 ?...基本上它是 REST 替代品,做了很多改进。 使用 GraphQL,我们可以获得许多新功能,构建 API 时为你提供强大功能。下面让我们一个一个地审视它们: 单端点 根本没有必要构建很多端点!...GraphQL 只需要一个端点,通过它我们可以单个请求获得尽可能多数据。基本上 GraphQL 会将你所有查询、修改和订阅封装在一个端点中,并供你调用。...但是当我开始研究它时,发现 GraphQL 具有为现代应用程序创建 API 所需基本功能,因为它非常适合现今技术栈。 所以如果我要对你说些什么,我会说:是的,GraphQL的确是API未来。

1.6K30

只需使用VS CodeREST客户端插件即可进行API调用

而这些数据绝大部分都是由 REST API 端点提供,通俗地说:我们想要数据存在于其他服务或数据库,我们应用程序查询该服务来检索数据,并根据自己需要使用数据。...在过去,为了连接 UI 以接受数据之前测试 REST API,通常必须通过终端命令行查询 API,或者使用像 Insomnia 或 Postman 这样 GUI(我之前博客对它们进行了比较)...安装 REST Client 要找到它,打开 VS Code 市场扩展(左侧面板上俄罗斯方块小图标),搜索栏输入 “rest client”,然后安装列表第一个结果(作者应该是 Huachao...测试一下:基本操作 这是很酷部分:经验,这个小小 REST Client 插件能够做事情和 Postman 等更复杂 API 客户端一样多。...应用程序,用户可以更新其名字,姓氏或电子邮件。 因此,传递正文时,如果 REST Client 成功击中 PUT 端点,则这就是 VS Code Response 选项卡样子。

8.2K20

云开发API连接器最佳练习

典型例子是: 基本认证 基于令牌认证 SSL认证 多重认证 基本认证 基本身份验证使用在base64编码用户名和密码经典组合,这是授权HTTP开头中提供。...最好通过管理门户或面板来执行操作,以便在开始使用API之前了解它工作原理。您需要做第一件事是使用API进行身份验证,然后您可以执行创建选项之前尝试基本读取操作。...验证API端点 API端点与云平台管理网址不同。API端点通常包括主机,端口和路径。如果它是一个REST API,那么它包括一个访问密钥和一个普通密钥。...API授权 API验证之后,我们需要知道云平台或服务给定用户授权。...例如,使用AWS Identity and Access Management(IAM)时,我们可能已经成功通过身份验证,但是我们只能执行我们IAM授权操作。

4.6K80

为云开发API接口最佳方案

REST正在逐渐成为标准,并且取代了一些旧SOAP API。根据文章后面的表1数据,这一点非常明显。 API认证 每个云平台都使用不同类型认证机制来访问API,了解这些认证机制很重要。...典型例子如下: 基本认证 基于令牌认证 SSL认证 多因素认证 基本认证 基本身份验证使用用户名和密码经典组合,并通过base64编码方式进行编码,这是授权HTTP头中提供。...在你开始使用API之前,最好通过管理门户或仪表板进行操作去了解它们运行原理。您使用API需要做第一件事是进行身份验证,然后您可以执行创建选项之前尝试基本读取操作。...验证API端点 API端点与云平台管理网址不同。API端点通常包括主机,端口和路径。如果它是一个REST API,它还包含一个认证key和密钥。...“POLL”模式,请求者重复调用API以检查状态更新。当您必须轮询或重试API请求时,我们建议使用指数退避算法计算API调用之间休眠时间间隔。

3.3K60

python测试开发django-61.权限认证(permission)

django rest framework权限和认证有四种方式: BasicAuthentication 此身份验证方案使用HTTP基本身份验证,根据用户用户名和密码进行签名。...基本身份验证通常仅适用于测试 TokenAuthentication 此身份验证方案使用基于令牌简单HTTP身份验证方案。令牌认证适用于客户端 - 服务器设置,例如本机桌面和移动客户端。...permission权限认证 权限检查通常使用request.user和request.auth属性身份验证信息来确定是否应允许传入请求。...请求头,则返回HTTP 401 Unauthorized 权限级别也有四种 AllowAny 允许所有用户 IsAuthenticated 表示仅仅允许身份验证通过用户访问,其他用户无法访问。...相关配置 settings.py,INSTALLED_APPS添加rest_framework和rest_framework.authtoken INSTALLED_APPS = [ 'apiapp

1.9K40

Django REST Framework-权限

Django REST Framework(DRF)为开发人员提供了一种灵活权限系统,该系统可让您轻松地API管理和保护敏感数据。...DRF,权限是通过Permission类实现,Permission类是一个抽象类,定义了几种方法来控制API访问权限。...IsAuthenticated IsAuthenticated是指要求用户已通过身份验证才能访问API视图。如果用户未经过身份验证,则DRF将返回一个HTTP 401 Unauthorized响应。...下面是一个简单示例,演示如何使用DRF权限系统:from rest_framework.permissions import IsAuthenticatedfrom rest_framework.response...如果未通过身份验证,DRF将返回一个HTTP 401 Unauthorized响应。get方法,我们还演示了如何使用request对象获取已通过身份验证用户和凭据。

61620

「Spring」认证安全架构指南

如果父级不可用,则null Authentication结果为AuthenticationException.有时,应用程序具有受保护资源逻辑组(例如,与路径模式匹配所有 Web 资源,例如/api...所有过滤器都具有相同 API(它们都实现了FilterServlet 规范接口),并且它们都有机会否决链其余部分。...例如,托管 UI 和支持 API 应用程序可能支持基于 cookie 身份验证,通过重定向到 UI 部分登录页面和基于令牌身份验证,以及对 API 部分未经身份验证请求 401 响应。...如果您希望您应用程序安全规则应用于执行器端点,您可以添加一个比执行器更早排序过滤器链,并且该过滤器链具有包含所有执行器端点请求匹配器。...使用线程Spring Security 基本上是线程绑定,因为它需要使当前经过身份验证主体可用于各种下游消费者。

93030

Django REST Framework-基于Oauth2身份验证(二)

要获取授权码,您需要重定向用户到授权服务器授权端点Django REST Framework,您可以使用AuthorizationView视图来处理授权端点。...第二步:获取访问令牌OAuth2身份验证流程第二步,我们需要使用授权码获取访问令牌。访问令牌用于验证API请求。...要获取访问令牌,请使用OAuth2客户端凭据和授权码向授权服务器令牌端点发出POST请求。Django REST Framework,您可以使用TokenView视图来处理令牌端点。...第三步:使用访问令牌进行身份验证OAuth2身份验证流程最后一步,我们可以使用访问令牌进行身份验证。要使用访问令牌进行身份验证,我们需要将其包含在API请求请求头中。...为了Django REST Framework中使用OAuth2Authentication,您需要在您API视图类添加以下代码:from rest_framework.views import

1.9K20

从0开始构建一个Oauth2Server服务 资源服务器

资源服务器 resource-server 资源服务器是 API 服务器 OAuth 2.0 术语。资源服务器应用程序获得访问令牌后处理经过身份验证请求。 大规模部署可能有多个资源服务器。...如果您使用是JWT,那么验证令牌可以完全资源服务器完成,而无需与数据库或外部服务器交互。 如果您令牌存储在数据库,那么验证令牌只是令牌表上进行数据库查找。...令牌内省端点仅供内部使用,因此您需要使用一些内部授权来保护它,或者只系统防火墙内服务器上启用它。 验证范围 scope 资源服务器需要知道与访问令牌关联范围列表。...返回带有标头 HTTP 401 响应,WWW-Authenticate如下所述。如果您 API 通常返回 JSON 响应,那么您也可以返回具有相同错误信息 JSON 正文。...“领域”值用于传统HTTP 身份验证意义上。“scope”值允许资源服务器指示访问资源所需范围列表,因此应用程序可以启动授权流程时向用户请求适当范围。

16330
领券