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

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

但是,我也曾遇到过一些让 REST 蒙羞的 API 例子,错误使用 HTTP 状态码、纯文本响应、不一致的模式、插入端点中动词......尽管如此,你可能还在想:“但我按照您推荐的方式,在响应体中发送了错误详细信息,那么问题出在哪里呢?” 让我给你讲个故事吧。..."error": "Expected at least three items in the list." } } 因此,我必须检查状态代码和临时状态字段,以确保一切正常后才能读取数据。...有一天,当我将REST API集成到我的一个项目中时,每次调用都收到HTTP 500内部错误。...我所使用的端点看起来像这样: POST: /buckets 当时我非常生气,怎么也想不明白究竟哪里出了问题。最后,原来是因为缺少了尾随斜杠导致服务器出错!

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

    Taro 小程序开发大型实战(七):尝鲜微信小程序云(下篇)

    ,对于支付宝小程序和 H5,我们则放在下一节使用 LeanCloud 的 Serverless 来解决。...所以我们这里强烈建议,在正规的环境下,关系型数据库应该建外键,JSON 数据库也至少应该保存 userId。...的条件下执行获取帖子列表的操作,对于支付宝小程序和 H5,我们则放在下一节使用 LeanCloud 的 Serverless 来解决。...,对于支付宝小程序和 H5,我们则放在下一节使用 LeanCloud 的 Serverless 来解决。...第六剑:定义对应的 reducers 文件 因为这里 SET_POST 的 Action 我们在上上 “大” 节中创建帖子时已经定义了,所有在 “这一剑” 中我们无需添加额外的代码,复用之前的逻辑就好。

    2.9K10

    Vue2+VueRouter2+webpack 构建项目实战(四)接通api,先渲染个列表

    甚至在写的过程中关闭了代码审查,否则通不过校验。...,很轻松的将页面渲染成功了。...每一个团队的规范都是不一样的,都是各有所长的,重要的是,条理性。 调用api.js 在第二节中,我们在src/config目录下面建立了一个api.js的空文件。在第三节中没有使用。...$api = api 插入这两行代码,就引用好了api.js,并且,把它绑定到了全局,然后我们就可以在各种地方使用这个文件了。虽然这个文件是空的。 可能部分朋友不知道插入到文件的哪里去。...如果你使用过jquery,应该熟悉其中的AJAX方法。当然,在vue中,我们就不考虑使用jquery了。我们使用superagent这个组件。

    49110

    关于“Python”的核心知识点整理大全58

    我们在base.html中添加这种链接,让每个页面都包含它; 我们将它放在标签{% if user.is_authenticated %}中,使得仅当用户登录后才能看到它: base.html...这里的重点是创建能够正确工作的网站,因此几乎没 有设置任何样式。确定所需的功能都能正确运行后,我们将设置这个网站的样式,使其看起来更 专业。...19.3 让用户拥有自己的数据 用户应该能够输入其专有的数据,因此我们将创建一个系统,确定各项数据所属的用户,再 限制对页面的访问,让用户只能使用自己的数据。...装饰器(decorator)是放在函数定义前面的指令,Python在函数运行前,根据它来修改函数代码的行为。下面来看一个示例。 1....我们将login_required()作为装饰器用于视图函数 topics()——在它前面加上符号@和login_required,让Python在运行topics()的代码前先运行 login_required

    1K10

    记一次视频抓包m3u8解密过程

    情景:女友买的学习视频将在一个月后到期(到期后下载在本地也无法看),让我帮忙把视频下载下来,之前抓过m3u8文件下载过视频切片合成后是一个完整视频,以为这次的任务非常简单~ 然鹅,查看一下app信息,...已经被加固处理(伪加固) 已经加固了,暂时不考虑脱壳编译 于是开始抓包,我的安卓手机没有root,在抓取某课app时由于 检测到代理导致某课app里面没网络,之前在玩安卓逆向的时候偶然发现 部分APP...app,有的安装后会闪退 抓包部分截图: 上面是抓到的m3u8信息,根据之前的到这一步应该是成功了,密钥和视频切片ts文件应该就可以合成完整视频 但是访问红色部分的key却是显示404,视频切片能下载但是无法解密...看到了一篇关于key被访问了一次就删除的博客,不得不让我猜想,是不是app客户端访问后拿下密钥文件,在app前端将下载的资源文件进行解析然后播放,既然访问了一次,我拿到的抓包数据也就是已经被访问过的了...,在这里我已经将app的缓存目录看了下,乱码很多不知道密钥文件放在哪里,所以我将整个流程用python写下来了 现在写到 登录->获取用户信息及token->获取所有课程->某个课程课程->视频

    1.4K20

    实践Jenkins集成Cobertura自动化构建SpringBoot工程

    但是,系统上线后故障还偶有发生,那么如何才能将系统代码质量提高一个档次做到上线后0故障的目标呢?...我想在编码时候,考虑正常和异常情况的时间分配比例应该是30%:70%。...Spring Test框架中的MockMvc实现了对Http请求的模拟,能够直接通过网络的形式,转换到Controller层的Api调用,这样在提高测试效率的同时可以不依赖外部环境。...这里,MockMvc对象提供一组工具函数用来执行assert判断,都是针对web请求的判断。这组工具的使用方式是函数的链式调用,允许程序员将多个测试用例链接在一起,并进行多个判断。...Cobertura 是一种开源的代码覆盖率检测工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码和没有执行哪些代码,并最终以html或者xml的格式来呈现最终测试的度量指标结果(比如分支覆盖率和代码行覆盖率

    3.5K30

    接口测试之Postman使用全指南(原来使用 Postman测试API接口如此简单)

    创建测试 – 测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率。...区域输入 链接 3、点击 “Send”按钮 4、你将看到下方返回200状态码 5、在正文中应该有10个用户结果,表明您的测试已经成功运行。...201,显示为创建成功 3、在Body里返回数据 如何将请求参数化 数据参数化是Postman最有用的特征之一。...2、你将看到Get请求的Pass状态; 3、由于我们没有任何Post测试,所以应该会出现请求没有任何测试的消息。...最好将环境放在与Step5 导出的集合相同的文件夹中。 Step 7 ) 导出Environment 到集合文件夹后,现在回到命令行,将目录更改为保存集合和环境的位置。

    6.4K10

    推荐学Java——初识数据库

    通过学习前面章节的内容你应该对一个类(Class)的结构应该掌握的很熟悉了,那么反射中就提供了对应的 API 来调用,如上图中的常用反射对象,掌握他们的写法和调用方式,并尝试着自己写一个类去反射,体验一下这个过程...我们前面所学过的知识都是基础操作层面的,而接下来要学习的内容都是完整的体系化,举个例子:你的微信头像修改了,换个手机之后头像依然是修改后的,那么你这个头像存放在哪里呢?...这就是我们要学习的数据库相关知识,到这你应该明白了,原来头像是放在数据库的,无论你是手机还是电脑登录微信,都会从数据库取你的头像,所以你看到的都是同一个头像。...我们是开发者,使用者才不关系头像存放在哪里,所以JDBC就是让我们明白这其中的原理和基本的操作方法(新增、删除、修改、查询)。 那么,常见的数据库有哪些呢?...对于上面的每个流程,都有对应的API,而不同的框架封装后暴漏出来的API又有可能不同,这些都需要我们随机应变,不断学习。

    2.3K40

    ES学习笔记(三)新建索引

    ' -d '' 是请求的方法,比如:GET、POST、DELETE、PUT等。 协议:http或者https。 主机地址。 端口 API的路径。...如果我们仔细观察这个图,可以看出node-130节点中的0分片,和node-132节点中的1分片,它们的边框是加粗的,这说明它们是主节点,而边框没有加粗的节点是从节点,也就是我们说的副本节点。...添加索引字段成功,我们再使用GET查看一下索引,如图: ? 我们可以成功的查询到新添加的索引字段了。...索引的关闭也很简单,请求方式如下: POST //_close 在我们的例子中,如果要关闭索引,降请求方法改成POST,然后发送如下请求: http://192.168.73.130:9200.../orgnization/_close 打开索引 与关闭索引相对应的是打开索引,请求方式如下: POST //_open 在我们的例子中,如果要打开索引,降请求方法改成POST,然后发送如下请求

    51330

    做好内容安全检测,和风险说「再见」!(上)

    } 上面的代码还可以在优化一下,就是将请求云函数的代码封装成一个函数。...如下所示,不封装也是没事的,只是我习惯性封装一下的,如果其他地方也用到该云函数,那么直接调用一下就可以了的 避免写重复的代码。...如果你说你不知道,没有处理过,对于候选人,那肯定是没有信服力的,无论是成功状态还是失败状态,都是应该有对应的用户提示。...而小程序的秘钥 AppSecret是不应该放在小程序端的,那样是不安全的,无论是HTTPS方式还是云调用模式,都绕不过后台请求微信提供的内容安全接口,然后在返回给小程序端。...其实在小程序云开发中,还提供了一种更简便的方法,那就是云调用,它是小程序·云开发提供的在云函数中调用微信开放接口的能力,只需简单的进行配置一下就可以了。 限于篇幅所致,放在下一节介绍。

    1.6K10

    DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

    远程过程调用(RPC) 远程过程调用为 Web 服务提供一个分布式函数/方法接口供用户调用。这是一种较传统的方式。通常,在 WSDL 中对 RPC 接口进行定义(类似于早期的XML-RPC)。...2.2 使用域名       应该尽量将API部署在专用域名之下,意思就是给API专门做一个服务器。...https://example.org/api/ 2.3 版本提示       网站的API可能一直在更新,那么应该将API的版本号放入URL。...https://api.example.com/v1/       另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。Github采用这种做法。...PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性,更新部分资源的意思)。

    2.9K20

    API测试之Postman使用全指南(原来使用 Postman测试API如此简单)

    创建测试 - 测试检查点(如验证HTTP响应状态是否成功)可以添加到每个API调用中,这有助于确保测试覆盖率。...区域输入 链接 3、点击 “Send”按钮 4、你将看到下方返回200状态码 5、在正文中应该有10个用户结果,表明您的测试已经成功运行。...Step 5 )发送请求 1、完成上述的信息输入,点击Send按钮 2、Status:应该是201,显示为创建成功 3、在Body里返回数据 ?...Step 4) 单击Run按钮后将显示Run结果页。根据延迟的不同,你应该在测试执行的同时看到显示的结果。 1、一旦测试完成,你就可以看到测试状态是通过还是失败,以及每个迭代的结果。...2、你将看到Get请求的Pass状态; 3、由于我们没有任何Post测试,所以应该会出现请求没有任何测试的消息。 ?

    3.4K10

    如何在购物 App 上实现商品快递物流信息的展示

    集成接口:在购物App的后端系统中,将选定的快递物流查询接口进行集成。这通常需要进行API调用。根据接口提供商的文档和指南,配置API密钥和相关参数,以确保能够向接口发送请求并获取相应的物流信息。...用户界面设计:在购物App的前端界面中,设计和添加物流查询的相关功能。可以在订单详情页面或用户个人中心中创建一个物流查询的入口或按钮。用户点击该入口后,将触发查询请求并显示物流信息。...查询和显示物流信息:当用户点击物流查询按钮时,调用后端API向快递物流查询接口发送请求,将订单号或快递单号作为参数传递给接口。...测试和优化:在集成完成后,进行全面的测试,确保物流查询功能在不同的场景和条件下正常工作。根据用户的反馈和使用情况,进行优化和改进,提升用户体验。物流查询入口应该放在何处?...图片点击【查看物流】的按钮,就调用物流查询的API,传入该商品的快递公司编码和物流单号,接口请求成功,返回的物流数据就填充展示到页面当中。

    52800

    当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?

    我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层里写些什么。 ---- MVVM,当然三层——M-V-VM。...其中 M 和 V 的中文词语和英文单词是很好理解的,但是 VM 就不是个日常用词;于是各种不知道应该放在哪里的代码便一窝蜂全放进了 VM 中,最终导致了 VM 的无限膨胀,成百上千行也是司空见惯啊!...于是那么多的代码写到哪里呢? 答案:MVVM 之外。 ---- 我们的代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 类程序的开发模式而已。...MVVM 模式按此理解后,我们将更能够将代码放到合适的位置,避免 VM 代码的膨胀: 公共的控件或者辅助代码应该抽出来放到别处,比如形成公共组件 一些非 UI 的业务功能单独做,独立于 MVVM 模式,...---- MVVM,应该做什么,不应该做什么 这一节内容部分参考自:MVVM standardization - W3Cgeek。

    1K10

    ES学习笔记(三)新建索引

    索引的设置和字段都放在Body中。 比如我们创建一个名字叫组织机构的索引,这个索引只有两个字段,一个id,一个name。并且这个索引设置为2个分片,2个副本。...如果我们仔细观察这个图,可以看出node-130节点中的0分片,和node-132节点中的1分片,它们的边框是加粗的,这说明它们是主节点,而边框没有加粗的节点是从节点,也就是我们说的副本节点。....png] 添加索引字段成功,我们再使用GET查看一下索引,如图: [image-20200426162306090.png] 我们可以成功的查询到新添加的索引字段了。...索引的关闭也很简单,请求方式如下: POST //_close 在我们的例子中,如果要关闭索引,降请求方法改成POST,然后发送如下请求: http://192.168.73.130:9200.../orgnization/_close 打开索引 与关闭索引相对应的是打开索引,请求方式如下: POST //_open 在我们的例子中,如果要打开索引,降请求方法改成POST,然后发送如下请求

    1.7K10

    谈谈项目的重构与测试

    不过这种方式我自己还不是特别满意,总感觉还是有点不太舒服,也说不清不舒服在哪里。那就干脆放弃它,使用别的方式吧。...测试代码不用关心项目的代码是同步还是异步的。就算项目重构了,测试完全无感知,只要api没变,就可以继续工作。...比如说测试代码中import了项目中的某个函数去获取一些数据,用于检查某个component的更新操作是否成功。在重构的过程中,该函数被重构成了协程。...这样一来,在测试代码中就不能采用原来一样的方式去调用了,也就是说测试代码受到了框架同步与异步的影响,下一节我们就来谈谈同步与异步的测试,以及对于这种问题的解决方案。...) 调用协程的地方添加yield关键字 测试代码如何适应项目的重构 如果是api测试 测试中尽量不要调用任何项目中的代码,它只专注于测试接口是否按照预期在工作,具体里面是怎么样的不需要关心。

    1.2K10

    Taro 小程序开发大型实战(六):尝鲜微信小程序云(上篇)

    云函数:可以用 Node.js 进行开发,自己编写对应的后端逻辑,并把写好的代码传到云端,然后在小程序前端使用 API 进行调用。...序号3是云函数,即我们可以在这里面管理一些我们编写的的后端 Node.js 逻辑,它运行在云中,我们可以在小程序端通过 API 来调用它们。...我们统一将所有的 API 文件放到 api 文件夹里面,这便于我们日后的代码维护工作,在 src 文件夹下创建 api 文件夹,在其中添加 user.js 文件,并在文件中编写内容如下: import...H5,我们则放在下一节使用 LeanCloud 的 Serverless 来解决。...context 对象包含了此处调用的调用信息和运行状态,可以用它来了解服务运行的情况。

    2.6K20

    小程序-云开发-如何对敏感词进行过滤即内容安全的检测(上)

    ,就是将请求云函数的代码封装成一个函数的 如下所示,不封装也是没事的,只是我习惯性封装一下的,如果其他地方也用到该云函数,那么直接调用一下就可以了的 避免写重复的代码的 至于是在失去焦点事件时发送请求还是在点击发送按钮时发送请求...(合规内容) 云函数请求成功,看看错误信息的反馈,对于熟悉该错误码的人清楚该文本违规了,但是反馈不是很明显,即使当下自己很清楚,然而,在过几个月在回来看代码,你或许都不知道是啥意思的 对于处理错误码,...,对于根据后端返回的状态码,判断接口哪里出了问题,定位是前端问题还是后端问题,这是一个非常常见的问题 如果你说你不知道,没有处理过,对于候选人,那肯定是没有信服力的,无论是成功状态还是失败状态,都是应该有对应的用户提示的...,无论是不使用云函数方式,自己有后端服务,获取access_token都应该是从后端返回给前端的 而小程序的秘钥 AppSecret是不应该放在小程序端的,那样不安全的,无论是HTTPS方式还是云调用模式...限于篇幅所致,放在下一节介绍的

    4K10

    RESTful API 设计最佳实践

    作者:Philipp Hauer 项目资源的URL应该如何设计?用名词复数还是用名词单数?一个资源需要多少个URL?用哪种HTTP方法来创建一个新的资源?可选参数应该放在哪里?...在资源集合URL上使用POST来创建新的资源过程 客户端向资源集合URL /employees 发送POST请求。HTTP body 包含新资源的属性 “Albert Stark”。...客户端会将JSON响应转换为JavaScript对象(通过调用var person = JSON.parse(response)),然后调用其属性。因此,最好遵循JavaScript代码通用规范。...将版本号放在URL中是必需的。如果您有不兼容和破坏性的更改,版本号可以让你更容易的发布API。发布新API时,只需增加版本号中的数字。...这样的话,客户端可以自如的迁移到新API,不会因调用完全不同的新API而陷入困境。 使用直观的 “v” 前缀来表示后面的数字是版本号。

    1.6K60
    领券