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

13 个设计 REST API 的最佳实践

在响应中返回错误详情 当 API 服务器处理错误时,如果能够在返回的 JSON body 中包含错误信息,对于接口调用者来说,会一定程度上帮助他们完成调试。...分清 401 和 403 当我们遇到 API 中关于安全的错误提示时,很容易混淆这两个不同类型的错误,认证和授权(比如权限相关)—— 老实讲,我自己也经常搞混。...在各种语言中,许多专门用于构建 REST API 服务的新框架已经出现了,它们可以帮助你在不牺牲生产力的情况下,轻松地完成工作,同时遵循最佳实践。...在 Python 中,我发现的最好的 API 框架之一是 Falcon。它与 Flask 一样简单,非常高效,十分适合构建 REST API 服务。...在 NodeJS 中,Restify 似乎也是一个不错的选择,尽管我还没有尝试过。我强烈建议你给这些框架一个机会!它们将帮助你构建规范,优雅且设计良好的 REST API 服务。

4.2K20

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

在处理应用程序/编程客户端(例如,通过Python中的requests库与您的API交互的另一个服务/API)时,这一点尤为重要——其中一些客户端依赖于此标头来准确解码响应。 3....有一天,当我将REST API集成到我的一个项目中时,每次调用都收到HTTP 500内部错误。...了解401未授权和403禁止之间的区别 如果我每看到一次开发人员甚至有经验的架构师搞砸这个问题就能得到一个25美分硬币……在处理REST API中的安全错误时,很容易弄混错误是与身份验证还是授权(又称权限...各种语言中已经出现了新框架, 它们专门用于构建REST APIs。它们能够帮助您轻松遵循最佳做法,并提高生产力。 在Python中, 我找到过其中之一优秀API框架就是Falcon。...在Node中,Restify似乎也是一个很好的选择,尽管我还没有尝试过。我强烈建议您试一试这些框架,它们将帮助您构建美观、优雅且设计精良的REST API。

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

    TypeScript 4.0 RC发布,带来诸多更新

    对于 concat,我们在较旧版本的 TS 中唯一可以做的就是尝试编写一些重载。...: string, ...rest: any[]]; 在标记一个元组元素时,还必须标记元组中的所有其他元素。...当我们第一次在 TypeScript 中实现 fragment 时,我们对其他库如何利用它们并不了解。如今,大多数鼓励使用 JSX 和支持 fragment 的库都具有类似的 API 设计。...该信息显示在自动完成列表中,并作为编辑器可以特别处理的建议诊断。在像 VSCode 这样的编辑器中,deprecated 的值通常显示为删除线样式。 有关详细信息,查看拉取请求。...属性重写访问器(反之亦然)是错误 以前,只有在使用 useDefineForClassFields 时,属性重写访问器或访问器重写属性是一个错误;但现在,在派生类中声明一个将重写基类中的 getter

    3.1K20

    5个REST API安全准则

    当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。...4 - 加密 (1)传输中的数据 除非公共信息是完全只读的,否则应强制使用TLS,特别是在执行凭证更新、删除和任何事务操作时。...(2)存储中的数据 在正确处理存储敏感或管制数据时,建议实现最佳实践。 有关详细信息,请参阅OWASP 2010年前10 - A7不安全加密存储。...当设计REST API时,不要只使用200成功或404错误。 以下是每个REST API状态返回代码要考虑的一些指南。 正确的错误处理可以帮助验证传入的请求,并更好地识别潜在的安全风险。...一些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全的,这意味着它们仅用于信息检索,并且不应该更改服务器的状态。在设计和构建REST API时,您必须注意安全方面。

    5K10

    解决使用清华镜像pip安装 Label Studio 时出现 HTTP 403 错误的详细教程

    解决使用清华镜像pip安装 Label Studio 时出现 HTTP 403 错误的详细教程 本文面向零基础用户,针对在终端执行: pip install -i https://pypi.tuna.tsinghua.edu.cn...镜像同步滞后或缺少该版本包 镜像同步机制:国内各大高校和厂商(清华、中科大、阿里云、豆瓣等)会定期从官方 PyPI(pypi.org/simple/)拉取最新包文件并同步到本地。...但有时配置了 --no-deps 或 --only-binary 等选项时,pip 先尝试下载,最终在解包时因版本不符导致 403 / 安装失败。...在 pip 配置中添加 trusted-host 并延长超时 某些情况下,即使镜像已经同步,局部网络或 SSL 验证问题依旧会导致 403/SSL 错误,这时可以在全局 pip 配置中加入信任主机并拉长超时...总结 本文针对“即使 pip 指定了正确的清华镜像地址,依然出现 HTTP 403 Forbidden” 的情况,做出了以下归纳与指导: 确认版本是否已同步到镜像上 403 往往并非拼写错误,而是目标

    3.4K10

    Kubernetes中PostgreSQL的故障诊断

    今天,我想逐步介绍一些人们在尝试在 Kubernetes 中运行 Postgres 时经常遇到的常见问题,并提供一些基本的故障排除思路以便入门。...如果缺少 Deployment 或 StatefulSet,通常可以在 CPK Operator 日志中找到原因。 镜像拉取 接下来,让我们看一下镜像拉取问题。有两个主要原因会导致镜像拉取错误。...在下一个事件条目中看到:403 Forbidden。这意味着我们没有权限从此镜像仓库拉取此 Pod。 添加拉取凭据 为了解决问题,我们将创建一个拉取凭据并将其添加到deployment中。...您可以在 CPK 文档中找到有关为私有镜像仓库创建拉取凭据的更多信息。 按照文档创建了镜像拉取凭据并将其添加到deployment中。我们应用了这个更改并删除了失败的 Pod。...在这篇博客中,我们成功地识别、诊断和纠正了在 Kubernetes 中安装 Postgres 时可能出现的常见问题。

    58410

    Python Requests代理使用入门指南

    你是否曾因为代理服务器配置不当而遭遇403错误代码?或是在测试API时收到未授权访问错误?这些常见的客户端错误不仅令人头疼,还会影响工作效率。...处理403错误代码 当用户配置代理并尝试访问某些资源时,可能会遇到403错误代码,这通常表示请求被拒绝,因而造成了访问错误。引起此类错误的原因有很多,但通常与权限设置有关。...Python中的Requests库提供了一些处理错误的机制,用户可以通过尝试捕获异常来执行此操作。...例如,尝试捕获HTTPError,并根据返回的错误状态进行相应处理,以便在出现问题时提供用户友好的反馈。...此外,网络安全设置也会影响请求的结果,初学者不妨详细阅读相关文档,了解如何配置用户权限及安全策略,以免在使用过程中遭遇连接问题或数据爬取限制。

    1.4K10

    5 款强大的 Kubernetes Events 收集与检索工具

    以下是我将要解释的内容的概述: 事件机制 Kubernetes API 中的事件结构 需要关注的事件类型 检索事件的可用解决方案 在本文的最后,会链接到 YouTube 和 Github 上的相关教程,...有两种方法可以查看 K8s 中的事件: kubectl describe pod kubectl get events 当应用程序出现问题时,您首先应该查看的是它的事件和它的基础设施操作。...要启动这个 pod,我们首先需要拉取容器的镜像。实际上,节点会从外部 docker 注册表中拉取镜像。调度程序还更倾向在已经拥有镜像的节点上调度 pod。...与 API 交互时,您将收集: message reason type 事件中涉及的对象 事件发生次数 事件的来源 这正是使用kubectl get events看到的。...信息事件:Pods 调度,镜像拉取,节点健康,deployment 更新,replica set 被调用,容器被杀死 警告:Pod 有错误,PV 尚未绑定 错误:节点已关闭,找不到 PV,无法在云提供商中创建负载均衡器等

    1.9K21

    NumPy 1.26 中文文档(五十三)

    会议记录在hackmd.io上,存储在NumPy 存档存储库中。 需要什么 NumPy 文档已经详细涵盖了细节。 API 参考文档直接从代码中的docstrings生成,当构建文档时。...如果你知道如何做,你可以提交一个拉取请求(PR)来修复,否则请提交一个问题。 拼写错误和拼写错误处于较低的层次; 我们乐意听到它们,但可能无法迅速修复。 这些也可以作为拉取请求或问题来处理。...亮点 新功能 在 numpy.random 中添加多变量超几何分布 废弃功能 np.fromfile 和 np.fromstring 将在错误数据上报错 在 ma.fill_value...兼容性说明 修复布尔类型在矩阵乘法(@ 操作符)中的回归问题 改进 数组比较断言包括最大差异 贡献者 合并的拉取请求 1.16.5 贡献者 合并的拉取请求 1.16.4...兼容性说明 错误类型变更 Tuple 对象数据类型 DeprecationWarning 转为错误 未来警告变更行为 数据类型现在始终为真 在 ndarray

    1.4K10

    基于OSQuery安全资产信息监控实践

    0x03 OSQuery方案 在一般服务器数据审计,基于Linux本身的libAudit库,能过底层的库可以取得服务器上的相关审计数据。可以使用C、Python、Go等多种语言封装库取得审计数据。...有了OSQuery本身不能直接对外提供直接服务,如果我们不使用Filebeat+OSQuery的组合方式进行数据集中到ES集群这种形式,我们可以尝试在服务器上创建RPC服务,对外提供公共服务,并且在服务器与监控机间进行点对点的权限许可...Django RPC提供是一个拉取数据的过程,与SNMP服务器与SNMPWalk之间的互动是一样的,为了方便展示OSQuery核心功能,样例程序,实现的是一个反向的数据推送功能,这样我们没有服务端创建服务...安装Django REST Django REST可以方便的对外提供REST API服务,用较少的代码,写较多的功能。...PULL拉取请求好处,可以将服务让任何支持RPC客户端服务代码使用。 如果没相写代码也可用OSQueryd加上Filebeat的形式,将数据集中到数据集群,以上已经提到。

    1.5K10

    如何修复WordPress内容更新和发布失败错误

    一个这样的问题是在WordPress编辑器中显示“发布失败”的消息: 区块编辑器中的发布失败错误 单击蓝色的“发布” 按钮后可能会出现此消息,以尝试使您的内容生效。...此错误的一个变体是“更新失败”消息,当您尝试对已发布的文章或页面进行更改时,可能会显示该消息: 在区块编辑器中更新失败错误 可以想象,这个问题对于博主以及任何发现自己需要更新其网页上的关键信息的网站所有者来说可能是一个特别令人沮丧的问题...如果这是导致您网站上出现错误的原因,您需要让REST API再次工作以修复它。...步骤 2:通过解决指定的错误重新启用REST API 理想情况下,站点运行状况工具将提供有关如何在WordPress站点上重新启用REST API的一些指示。...一些用户发现他们在Windows服务器上运行WordPress时遇到了这个问题。您需要编辑您的web.config文件来修复它。

    8K31

    DRF对Django请求响应做了技术升级

    其中最核心的属性是request.data,它和request.POST的区别如下: request.POST # 只处理表单(Form)数据,只支持POST方法 request.data # 处理任何数据..._502_BAD_GATEWAY = 502 HTTP_503_SERVICE_UNAVAILABLE = 503 HTTP_504_GATEWAY_TIMEOUT = 504 全部的状态码标识符可以在rest_framework.status...snippets.serializers import SnippetSerializer @api_view(['GET', 'POST']) def snippet_list(request)...", "style": "friendly" } API文档 DRF提供了可视化的API HTML文档,把API URL在浏览器中打开即可看到: ?...东方说 最近测试开发和业务测试的话题频频出现在TesterHome论坛上,讨论激烈,我觉得从公司的角度来说,只会关注员工的产出有没有给公司带来价值,无论技术多厉害,不能创造价值终究是会优先被裁的。

    1.2K20

    总结最近半年对Elasticsearch开源项目的贡献

    进行修改时却没有报错,本次提交的改动是在修改两个参数时抛出400参数错误。...修复_search/template API返回结果总量不准的bug issue: #52801 PR: #53155 调用GET _search/template API时,如果设置了rest_total_hits_as_int...但是在_search/template API的处理逻辑中,虽然rest_total_hits_as_int设置为了true, trackTotalHitsUpTo值却没有被设置,因此只能获取到最多为10000...实际上,ES对所有类型的block,对应的http状态码都设置为403, 这就会导致一个问题,在部分客户端比如rest client碰到403的状态码,是不会对写入请求进行重试的,直接丢弃掉请求,导致数据丢失...该工具的执行实际上调用了项目中的CronEvalTool类的main方法,实际上在执行的过程中,因为没有正确地捕获异常,导致在对非法的cron表达式进行校验时,工具直接把整个stacktrace信息都打印出来了

    2.1K31

    我们必须要知道的RESTful服务最佳实践

    REST是什么,应该知道的6大原则 REST之父Roy Fielding在论文中阐述REST架构的6大原则。 1. C-S架构 数据的存储在Server端,Client端只需使用就行。...提示:REST架构中的设计准则中,只有按需编码为可选项。如果某个服务违反了其他任意一项准则,严格意思上不能称之为RESTful风格。 3.RESTful使用应该注意的问题 1....获取今天登陆的用户、登陆时间降序排列 3. url命名规范 API 命名应该采用约定俗成的方式,保持简洁明了, 在RESTful架构中,每个url代表一种资源所以url中不能有动词,只能有名词,并且名词中也应该使用复数...4** 请求错误这些状态代码表示请求可能出错,妨碍了服务器的处理。 5**(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。...POST 新增一条数据 201创建成功、422新增数据验证错误、(401、403、404、406、500) DELETE 删除一条数据 204删除成功、(401、403、404、406、500) PATCH

    1.6K30

    2026 澳大利亚证券交易所(ASX)API 接入与 Python 量化策略

    ,优质的 API 会提供毫秒级的实时推送,而非延迟的快照数据;接入方式:多数澳洲股市 API 支持 RESTful 接口(拉取数据)和 WebSocket(推送实时数据),前者适合按需查询,后者适合实时行情监控...环境准备首先安装必要的 Python 库,requests 用于调用 REST 接口,websocket-client 用于实时推送,pandas 用于数据处理:pip install requests...拉取单只股票实时行情先从最简单的 REST 接口入手,获取某只澳洲股票(比如 CBA,澳洲联邦银行)的实时数据:import requestsurl = "https://api.itick.org/stock...(比如每秒 10 次),批量查询时要加延时,避免被限流;数据验证:实时行情偶尔会有异常值(比如价格跳空),策略中要加入数据清洗逻辑,比如过滤超出合理波动范围的价格;测试环境:先用模拟盘/测试 API 验证策略...总结接入澳洲股市 API 的核心是先明确数据需求(实时/历史),选择适配的接口类型(REST/WebSocket),iTick API 作为示例,其接入流程具备通用性;Python 对接 API 的关键是做好权限验证

    7700

    用 GraphQL 查询你的 Django 应用

    先来看看 wikipedia: GraphQL 是一个开源的,面向 API 而创造出来的数据查询操作语言以及相应的服务端运行环境。...也正因此,GraphQL 在实现上更加繁复,所以面对 API 数量少、需求不会轻易的场景时,REST 反而是更适合的技术选型。...而使用 REST 协议进行资源拉取,我们总是会面临一些实际的问题,而 GraphQL 可以在一定程度上解决。...相较于原生的 GraphQL ,客户端主要解决了几件事情: 客户端数据拉取缓存问题(包括缓存一致性、更新缓存等) 数据分页、声明式数据获取 ......return User.objects.get(username=username) 需要注意的是,当我们使用 resolve_ 函数去处理查询时,GraphQL 和 REST 本质上只是查询 DSL

    2.9K60
    领券