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

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

, 4xx 表示客户端错误 和5xx 表示服务器错误 当然你还可以使用其他 HTTP 协议提供给 REST API 设计功能 ,这些都必须牢记在心里。...在处理应用程序/编程客户端(例如,通过Python中requests库与您API交互另一个服务/API)时,这一点尤为重要——其中一些客户端依赖于此标头来准确解码响应。 3....状态码返回200 OK,但我不能完全确定它有没有处理我请求失败。...了解401授权和403禁止之间区别 如果我每看到一次开发人员甚至有经验架构师搞砸这个问题就能得到一个25美分硬币……在处理REST API安全错误时,很容易弄混错误是与身份验证还是授权(又称权限...根据不同情况,以下是我备忘单,用于了解我正在处理什么问题: 消费者没有提供身份验证凭据吗?他们SSO令牌是否无效/超时? 401 授权

35040

Google支付和服务端验证

所以需要重新安装google套件 查询上次消费商品,如果有消费商品通知服务器,然后消费掉。...=刚刚获取refreshToken client_id=创建api项目是的clientId(客户端ID) client_secret=创建api项目时clientSecret(客户端密钥) image.png...play账号对应一个项目,这个google play账号中所有的应用,都可以通过这个查询支付api项目去查询 获取code授权api项目时,要使用google play后台开发者账号授权 关于RefreshToken...过期问题 api项目-同意屏幕,发布状态为测试(有效期7天) RefreshToken 6个月都未使用,这个要维护accessToken有效性,应该可以不必考虑 授权账号改密码了(笔者测试,修改开发者账号密码是否会导致过期...) 授权超过50个刷新令牌,最先刷新令牌就会失效(这里50个应该够用了,除了测试时,可能会授权多个) 取消了授权 属于具有有效会话控制策略 Google Cloud Platform 组织 未经允许不得转载

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

知识分享之规范——HTTP 状态

客户端应该继续发送请求剩余部分,或者,如果请求已经完成,则忽略此响应。服务器必须在请求完成后发送最终响应。 101交换协议 为响应来自客户端升级请求标头而发送,并指示服务器正在切换到协议。...102 处理 (WebDAV) 表示服务器已收到并正在处理请求还没有响应。 103 早期提示 主要用于与Link标头一起使用。它建议用户代理在服务器准备最终响应时开始预加载资源。...4xx 状态码(客户端错误) 状态码 描述 400 错误请求 由于语法不正确,服务器无法理解该请求客户端不应该在没有修改情况下重复请求。 401未经授权 表示请求需要用户认证信息。...客户端可以使用合适 Authorization 头域重复请求 402 需要付款(实验性) 保留供将来使用。它旨在用于数字支付系统。 403 禁止 未经授权请求客户端没有内容访问权限。...5xx 状态码(服务器错误) 状态码 描述 500内部服务器错误 服务器遇到了阻止它完成请求意外情况。 501 实施 服务器不支持HTTP方式,无法处理。

1.7K30

测试面试题集-接口测试

GET:发送一个请求获取服务器某一资源,多用于查询数据(如列表查询); POST:将数据添加到服务器现有文件或资源(如提交表单或者上传文件),POST 请求可能会导致新资源建立或已有资源修改...2.GET请求POST请求区别? 1.提交数据形式: • GET方法一般是指获取服务器数据,通过地址栏传输,请求参数(query string查询字符串)直接跟着URL后,以?...: • GET是获取指定资源 ; • POST是向指定资源提交要被处理数据 ; 6.请求体: • GET没有请求体; • POST请求体; 7.效率方面: • GET产生一个TCP数据包;...3.无状态:协议对于事务处理没有记忆能力,客户端第一次与服务器建立连接发送请求时需要进行一系列安全认证匹配等,因此增加页面等待时间,当客户端服务器端发送请求服务器端响应完毕后,两者断开连接,也不保存连接状态...:授权(Unauthorized)——请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用; • 403:禁止(Forbidden)——服务器收到请求,但是拒绝提供服务。

89731

5个REST API安全准则

cookie或内容参数发送,以确保特权集合或操作得到正确保护,防止未经授权使用。...400错误请求 -请求格式错误,如消息正文格式错误。 401授权 -错误或没有提供任何authencation ID /密码。...429太多请求 -可能存在DOS攻击检测或由于速率限制请求被拒绝 (1)401和403 401“授权真正含义未经身份验证,“需要有效凭据才能作出回应。”...403“禁止”真正含义未经授权,“我明白您凭据,很抱歉,你是不允许!” 概要 在这篇文章中,介绍了5个RESTful API安全问题和如何解决这些问题指南。...一些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全,这意味着它们仅用于信息检索,并且不应该更改服务器状态。在设计和构建REST API时,您必须注意安全方面。

3.7K10

探索RESTful API开发,构建可扩展Web服务

状态无关性: 客户端服务器之间交互不应该包含关于请求状态信息。每个请求应该是完全独立。资源导向: API应该基于资源进行操作,而不是行为。资源可以是任何东西,如用户、产品或订单。...如果查询返回了结果,我们提取资源信息并将其编码为JSON格式返回给客户端。如果未找到资源,我们返回404错误响应。实现POST请求实现POST请求时,我们目标是在服务器上创建新资源。...在RESTful API中,POST请求通常用于向服务器提交数据,以创建新资源。...null;// 如果提供授权信息,则返回授权响应if (!...例如,如果客户端提交数据不合法,则可以返回400 Bad Request响应。如果客户端尝试访问未经授权资源,则可以返回401 Unauthorized响应。

22500

RESTful规范

它主要用于客户端服务器交互类软件。基于这个风格设计软件可以更简洁,更有层次,更易于实现缓存等机制。...HEAD:获取资源元数据 OPTIONS:获取信息,关于资源哪些属性是客户端可以改变 PATCH:在服务器更新资源(客户端提供改变属性) 安全性和幂等性 1.     ...§400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出请求有错误,服务器没有进行新建或修改数据操作,该操作是幂等。...不要发生了错误给2xx响应,客户端可能会缓存成功http请求; 2.     正确设置http状态码,不要自定义; 3.     ...常用http状态码及使用场景: 状态码 使用场景 400 bad request 常用在参数校验 401 unauthorized 未经验证用户,常见于登录。

1.9K00

新手必须知道 Kubernetes 架构

API Server 组件在很大程度上依赖于此来获得通知并将 etcd 的当前状态移动到所需状态。 etcd 实例数量应该是奇数吗?...提供乐观并发锁定,因此在并发更新情况下,对对象更改永远不会被其他客户端覆盖。 对客户端发送请求执行身份验证和授权。...满足 Pod 调度要求节点称为可行节点。如果没有合适节点,则 pod 将保持调度状态,直到调度程序能够放置它。一旦找到可行节点,它就会运行一组函数来对节点进行评分,并选择得分最高节点。...然后它会通知 API Server 有关所选节点信息,此过程称为绑定。 节点选择分为两步: 过滤所有节点列表以获取 pod 可以调度到可接受节点列表。...使用配置容器运行时启动 pod 容器。 持续监控正在运行容器并将其状态、事件和资源消耗报告给 API Server。

56920

Restful API 接口规范详解

PUT(UPDATE):在服务器更新资源(客户端提供完整资源数据)。PATCH(UPDATE):在服务器更新资源(客户端提供需要修改资源数据)。DELETE(DELETE):从服务器删除资源。...从请求流程来看,RESTful API和传统API大致架构如下:传统url接口与RESTful风格接口区别 在restful风格中,将互联网资源抽象成资源,将获取资源方式定义为方法,从此请求再也不止...安全性:对该REST接口访问,不会使服务器端资源状态发生改变。RESTful API设计规范 既然了解了RESTful一些规则和特性,那么具体该怎么去设计一个RESTful API呢?...page=2&limit=105、使用 HTTP 状态码来表示请求结果 使用 合适HTTP 状态码来表示请求结果,以便客户端能够根据状态码进行处理。例如:。...状态码主要分为五大类:1xx:相关信息2xx:操作成功3xx:重定向4xx:客户端错误5xx:服务器错误例如:200:请求成功201:资源创建成功400:请求参数错误401:授权访问403:表示禁止访问资源

3.1K11

新手必须知道 Kubernetes 架构

API Server 组件在很大程度上依赖于此来获得通知并将 etcd 的当前状态移动到所需状态。 etcd 实例数量应该是奇数吗?...提供乐观并发锁定,因此在并发更新情况下,对对象更改永远不会被其他客户端覆盖。 对客户端发送请求执行身份验证和授权。...满足 Pod 调度要求节点称为可行节点。如果没有合适节点,则 pod 将保持调度状态,直到调度程序能够放置它。一旦找到可行节点,它就会运行一组函数来对节点进行评分,并选择得分最高节点。...kubelet 服务主要功能有: 通过在 API Server 中创建节点资源来注册它正在运行节点。 持续监控 API Server 上已调度到节点 Pod。...使用配置容器运行时启动 pod 容器。 持续监控正在运行容器并将其状态、事件和资源消耗报告给 API Server。

69930

还原Facebook数据泄漏事件始末,用户信息到底是如何被第三方获取

▌ 1、数据泄漏事件始末 日前,一位爆料者向 英国《观察者报》透露:剑桥分析公司 ( Cambridge Analytica ) 是如何利用 2014 年初获取未经授权个人信息,来构建一个可以描述美国选民个人特征...用户只需回答一些娱乐性质一样不疼不痒测试问题,就可以获得奖金,而前提是,在做性格测试之前需要把部分 Facebook 信息授权给这个第三方程序,这其中不仅包括你头像昵称,还有好友列表和好友一些状态信息...添加新字段:如果你是 Graph API 新手,那么可能对一些用户节点字段不太熟悉。 你可以在节点面板中单击 Search for a field +按钮来查看并选择新字段。...请注意,由于上次权限请求仍处于选中状态,因此 建议你在这只选择你所需要权限。 在这个例子中,你只需要 user_photos 访问权限。 现在重新运行该请求,系统将会返回你相册。...访问令牌:对于此请求,你需要一个页面访问令牌。点击 Get Token ,获取用户访问令牌并选择 publish_actions 权限。

3.5K50

HTTP状态码及其含义

服务器必须在请求完后向客户端发送一个最终响应 101 Switching Protocols:服务器已经理解了客户端请求,并将通过Upgrade消息头通知客户端采用不同协议来完成这个请求。...202 Accepted:告诉客户端请求正在被执行,还没有处理完。...(HTTP 1.1新) ---- 4XX:客户端错误 400 Bad Request:请求出现语法错误 401 Unauthorized:客户试图未经授权访问受密码保护页面。...402 Payment Required:使用。 403 Forbidden:资源不可用。服务器理解客户请求拒绝处理它。通常由于服务器上文件或目录权限设置导致。...(HTTP 1.1新) 417 Expectation Failed:如果服务器得到一个带有100-continue值Expect请求头信息,这是指客户端正在询问是否可以在后面的请求中发送附件。

1.7K20

前端开发中不可忽视知识点汇总(二)

——表明该请求被成功地完成,所请求资源发送回客户端 201——提示知道新文件URL 202——接受和处理、处理未完成 203——返回信息不确定或不完整 204——请求收到,返回信息为空 205—...401——请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 HTTP 401.1 - 授权:登录失败   HTTP 401.2 - 授权服务器配置问题导致登录失败...,服务器无法取得所请求网页,请求资源不存在。...408——客户端没有在用户指定饿时间内完成请求 409——对当前资源状态请求不能完成 410——服务器上不再有此资源且无进一步参考地址 411——服务器拒绝用户定义Content-Length...中 loadUrl 方法; 3、通过DNS解析获取网址IP地址,设置 UA 等信息发出第二个GET请求; 4、进行HTTP协议会话,客户端发送报头(请求报头); 5、进入到web服务器 Web

1.7K40

OAuth 详解 什么是 OAuth 2.0 隐式授权类型?

redirect_uri- 告诉授权服务器在用户批准请求后将用户发送回何处。 scope- 一个或多个空格分隔字符串,指示应用程序请求权限。您使用特定 OAuth API 将定义它支持范围。...通过这样做,服务器确保应用程序能够从 URL 访问该值,浏览器不会将 HTTP 请求访问令牌发送回服务器状态值将与应用程序最初在请求中设置值相同。...授权代码授予要求 JavaScript 应用程序向授权服务器发出 POST 请求,因此授权服务器需要支持适当 CORS 标头才能允许浏览器发出该请求。...如果您正在构建自己授权服务器,这是一个相对容易进行更改,如果您使用是现有服务器,那么您可能无法使用隐式授权来绕过 CORS 限制。...相比之下,当应用程序使用授权代码授权获取 时id_token,令牌将通过安全 HTTPS 连接发送,即使令牌签名未经过验证,该连接也能提供基准级别的安全性。

24750

从0开始构建一个Oauth2Server服务 单页应用

在这种情况下,应用程序服务器永远不会向服务发出 API 请求,因为一切都直接在浏览器中处理。 授权 授权代码是一个临时代码,客户端将用它来交换访问令牌。...代码本身是从授权服务器获得,用户可以在授权服务器上看到客户端请求信息,并批准或拒绝该请求。 Web 流程第一步是向用户请求授权。这是通过创建授权请求链接供用户单击来实现。...如果用户单击“批准”,服务器将重定向回网站,并提供授权代码和URL 查询字符串中状态值。 授权授予参数 以下参数用于发出授权请求。...查看服务文档以了解详细信息。 客户身份证明(必填) 尽管此流程中使用客户端密码,请求需要发送客户端 ID 以识别发出请求应用程序。...为了让单页应用程序使用授权代码流,它必须能够向授权服务器发出 POST 请求。这意味着如果授权服务器在不同域中,服务器将需要支持适当 CORS 标头。

18430

网络安全—如何预防常见API漏洞

1.jpg 如今,API 已成为将当今APP经济粘合剂,在Web 2.0浪潮到来之前,开放API 甚至源代码主要体现在桌面应用上,越来越多Web应用面向开发者开放了API,同时也正在成为黑客攻击头号目标...API端点,在之前网络安全事件中,就有由于开发人员API无需编辑即可访问生产数据,进而暴露了客户系统,属于此类别的漏洞还包括监控开发API敏感数据,以及让已弃用API仍处于在线或公开状态。...第二:受损对象级别授权Broken Object Level Authorization (BOLA) BOLA通俗定义是对对象访问请求验证不充分,它允许攻击者通过重用访问令牌来执行未经授权操作...,并返回客户端客户端下次请求时把此token传到服务器,验证token是否有效,有效就登陆成功,并生成新token返回给客户端,让客户端在下一次请求时候再传回进行判断,如此重复。...这种方法有性能问题,但也有一个漏洞,如果用户在一次请求后,还未进行下一次请求就已被黑客拦截到登录信息并进行假冒登录,他一样可以登录成功并使用户强制下线,这种方法已大大减少被假冒登录机会。

58420

RESTful API 设计最佳实践

使用四种HTTP方法POST,GET,PUT,DELETE可以提供CRUD功能(创建,获取,更新,删除)。 获取:使用GET方法获取资源。GET请求从不改变资源状态。GET方法具有只读含义。...(错误) 获取56号员工信息 更新56号员工信息 删除56号员工 对资源集合URL使用POST方法,创建新资源 创建一个新资源时,客户端服务器是怎么交互呢?...请求HTTP body中包含要更新属性值(21号员工新名称“Bruce Wayne”)。 REST服务器更新ID为21员工名称,并使用HTTP状态码200表示更改成功。...- 如果客户端发生错误(例如客户端发送无效请求或未被授权) 5xx – 服务器错误 - 如果服务器发生错误(例如,尝试处理请求时出错) 参考维基百科上HTTP状态代码。...通常会用到一下几个: 2xx:成功3xx:重定向 4xx:客户端错误 5xx:服务器错误 200 成功301 永久重定向400 错误请求500 内部服务器错误201 创建304 资源未修改401授权

1.3K60

Ajax Status请求状态

当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 服务器内容时,IIS 返回一个表示该请求状态数字代码。...(HTTP 1.1新) 4xx - 客户端错误 发生错误,客户端似乎有问题。例如,客户端请求不存在页面,客户端提供有效身份验证信息。...400 - Bad Request 请求出现语法错误。 401 - Unauthorized 访问被拒绝,客户试图未经授权访问受密码保护页面。...401.7 – 访问被 Web 服务器 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。 403 - Forbidden 资源不可用。服务器理解客户请求拒绝处理它。...501 - Not Implemented 服务器不支持实现请求所需要功能,页眉值指定了实现配置。例如,客户发出了一个服务器不支持PUT请求

1.8K10

容器与云碰撞——一次对MinIO测试

容器与云碰撞——一次对MinIO测试 事先声明:本次测试过程完全处于本地或授权环境,仅供学习与参考,不存在授权测试过程。...本文提到漏洞《MinIO授权SSRF漏洞(CVE-2021-21287)》已经修复,也请读者勿使用该漏洞进行授权测试,否则作者不承担任何责任 (本文英文版本) 随着工作和生活中一些环境逐渐往云端迁移...我们目标当然不仅限于此。 与PHPfile_get_contents()和Pythonrequests.post()不同,Go默认http库会跟踪302跳转,而且不论是GET还是POST请求。...,也就是说,在服务端返回307状态情况下,客户端会按照Location指向地址发送一个相同方法请求。...拿到这个容器Id,用execAPI,在其中执行反弹shell命令。 最后成功拿到MinIO容器shell: 当然,我们也可以通过Docker API获取集群权限,这不在本文介绍范围内了。

2.2K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券