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

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

但是,我主要接触的是REST,这是一种基于资源的APIWeb服务开发架构风格。在我的职业生涯中有很大一部分时间都参与了构建、设计使用API 的项目。..., 4xx 表示客户端错误 5xx 表示服务器错误 当然你还可以使用其他 HTTP 协议提供给 REST API 设计的功能 ,但这些都必须牢记在心里。...不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...分页允许用户逐步获取数据集。最简单类型的分页就是按页码进行分页,它由pagepage size确定。现在问题来了:如何将这样的功能融入REST API?...使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?大多数时候,您希望建立一个快速的API,以便一些服务可以相互交互。

35840

如何使用SpringJava配置构建一个REST API

使用@ExceptionHandler 7. 附加的Maven依赖项 8. 总结 1. 概览 本文展示了如何在Spring中配置REST——控制器HTTP状态响应码、有效负载编排内容协商的配置。...的情况下,如果它检测到JacksonJAXB 2在类路径上存在,就会自动创建和注册默认的JSONXML converter。...它们还确保使用正确的HTTP转换器对资源进行编排反编排。内容协商将主要基于Accept头选择使用哪个可用的转换器,但是也可以使用其他HTTP头确定资源特定格式的表述。 6....API的一部分,因此应该只在对应于REST的适当层中使用;例如,如果存在DAO/DAL层,则不应该直接使用上面的自定义异常。...总结 本教程演示了如何使用Spring 4Java配置实现一个REST服务,讨论了HTTP响应码、基本内容协商编排。

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

如何使用Vue.jsAxios显示API中的数据

Vue.js非常适合使用这些类型的API。 在本教程中,您将创建一个使用Cryptocompare API的Vue应用程序显示两个主要加密货币的当前价格:比特币Etherium。...这些编辑器可在Windows,MacOSLinux上使用。 熟悉使用HTMLJavaScript。 了解更多如何将JavaScript添加到HTML 。...熟悉JSON数据格式,您可以在JavaScript中了解如何使用JSON来了解更多信息。 熟悉向API发出请求。 有关使用API​​的综合教程,请参阅如何在Python3中使用Web API 。...我们将构建一个带有一些模拟数据的HTML页面,我们最终将用来自API的实时数据替换它们。 我们将使用Vue.js显示这个模拟数据。 对于第一步,我们将所有代码保存在一个文件中。...这就是Vue如何让我们在UI中声明性地呈现数据。 我们定义这些数据

8.7K20

教程 | 如何使用Docker、TensorFlow目标检测APIOpenCV实现实时目标检测视频处理

选自TowardsDataScience 作者:Léo Beaucourt 机器之心编译 参与:李诗萌、路雪 本文展示了如何使用 Docker 容器中的 TensorFlow 目标检测 API,通过网络摄像头执行实时目标检测...此外,我还在项目中添加了视频后处理功能,这一功能也使用了多进程,以减少视频处理的时间(如果使用原始的 TensorFlow 目标检测 API 处理视频,会需要非常非常长的时间)。...用于数据科学的 Docker 鉴于大量文章对 TensorFlow 目标检测 API 的实现进行了说明,因此此处不再赘述。作为一名数据科学家,我将展示如何在日常工作中使用 Docker。...视频处理 为了成功用网络摄像头实时运行目标检测 API,我用了线程多进程 Python 库。...总结 本文介绍了如何使用 docker TensorFlow 实现实时目标检测项项目。如上文所述,docker 是测试新数据科学工具最安全的方式,也是我们提供给客户打包解决方案最安全的方式。

2.8K60

2021年11个最佳无代码低代码后端开发利器

用Draftbit构建的移动应用程序可以通过REST API连接到几乎任何后端即服务(BaaS)平台。我们庞大的用户群使用不同的后端服务连接他们的应用程序与数据库。...在Airtable基础中建立自动化工作流程是通过使用自定义动作触发一个事件。最终,该动作整合到了Airtable基地内部。 Airtable还为每个基地生成了一个REST API。...使用关系型数据库的好处是,它可以帮助你一直保持一致。 关系型数据库或SQL数据库是基于表的数据库。它们有预先定义的模式,并使用结构化查询语言(SQL)定义操作数据。...它支持REST API范式,将数据消耗到前端工具。它根据创建的模式,为每个数据表自动生成随时可用的REST API端点。Xano生成的每个端点都可以使用其无代码API生成器进行定制。...它使你的数据可以通过GraphQL APIREST API即时访问。这有助于你专注于建立运送应用程序的速度。 Hasura使用Postgres连接连接到数据库。它可以横向扩展并保持状态以缓存查询。

12.5K20

如何使用API进行大规模数据收集分析

在当今信息爆炸的时代,如何高效地进行大规模数据收集分析是一项重要的能力。...本文将介绍如何使用API进行大规模数据收集分析的步骤,并分享一些实用的代码示例,帮助您掌握这一技巧,提升数据收集分析的效率。第一部分:数据收集1....了解API: - 在开始之前,我们需要了解所使用API的基本信息,包括API的访问方式、请求参数、返回数据格式等。通常,API提供方会提供相应的文档或接口说明供开发者参考。2....的基本信息,使用requests库发送API请求以获取数据,并利用pandas、numpymatplotlib等数据分析库进行数据处理可视化,我们可以高效地进行大规模数据的收集分析工作。...希望本文对您在API使用数据收集和数据分析方面的学习实践有所帮助,祝您在数据领域取得成功!加油!

20520

Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序

后端服务器将Node.js + Express用于REST API,前端是带有Vue Routeraxios的Vue客户端。...在这个页面中,你可以: 使用Publish/UnPublished按钮将状态更改成Published/Pending 使用Delete按钮从MySQL数据库中删除对象 使用Update按钮更新数据库中对象的详细信息...Node.js Express导出REST API,并使用Sequelize ORM与MySQL数据库进行交互。 Vue客户端使用axios发送HTTP请求并获取HTTP响应,在组件中使用数据。...db.config.js导出MySQL连接Sequelize的配置参数。 在server.js的Express Web服务器中,我们配置CORS,初始化并运行Express REST API。...我们还介绍使用Express&Sequelize ORM的REST API的客户端-服务器体系结构,以及用于构建前端应用程序以发出HTTP请求和使用响应的Vue.js项目结构。

24.9K21

Flume如何使用SpoolingDirSourceTailDirSource避免数据丢失的风险?

异步source的缺点 execsource异步的source一样,无法在source向channel中放入event故障时(比如channel的容量满了),及时通知客户端,暂停生成数据,容易造成数据丢失...如果客户端无法暂停,必须有一个数据的缓存机制! 如果希望数据有强的可靠性保证,可以考虑使用SpoolingDirSource或TailDirSource或自己写Source自己控制!...SpoolingDirSourceexecsource不同,SpoolingDirSource是可靠的!即使flume被杀死或重启,依然不丢数据!...hdfs.path = hdfs://hadoop101:9000/flume/%Y%m%d/%H/%M #上传文件的前缀 a1.sinks.k1.hdfs.filePrefix = logs- #以下三个目录的滚动相关...配置文件 使用TailDirSourcelogger sink #a1是agent的名称,a1中定义了一个叫r1的source,如果有多个,使用空格间隔 a1.sources = r1 a1.sinks

2K20

弱网客户端的福音:节省带宽的利器【ETag

2.RESTETag 3.使用 curl验证ETag功能 4.Spring对ETag的支持 5.测试ETag 6.ETag的其它用武之地 7....总结 1.概览 本文将重点介绍如何在Spring中添加ETag功能、如何使用 curl验证添加了ETag功能的REST API以及对这些REST API进行集成测试。...3.使用 curl验证ETag功能 一个通过客户端和服务器通信简单地测试ETag特性的操作可以分解为以下步骤: – 首先,客户端发起一个对REST API的调用——响应包括了需要存储的ETag头,以便进一步使用...52 – 客户端在下一步发起REST API请求时,会使用If-None-Match头携带上一步保存的ETag值;如果服务器上的资源没有发生变化,那么响应将不会包含任何响应体,并且返回的HTTP状态码将会是...;请记住,自从上次检索以来,资源已经被更新了,所以前面存储的ETag值已经不能代表现在的资源了——响应将包含新的数据一个新的ETag,这个新的ETag可以被存储起来以供后续使用: curl -H "Accept

1.8K20

撰写合格的REST API

稍稍总结了些经验,在这篇文章里讲讲如何撰写「合格的」REST API。 RFC一致性 REST API一般用来将某种资源允许的对资源的操作暴露给外界,使调用者能够以正确的方式操作资源。...如今鲜有人在撰写REST API时, 简单说来就是一个操作符合幂等性,那么相同的数据参数下,执行一次或多次产生的效果(副作用)是一样的。...一个合格的REST API需要根据Accept头灵活返回合适的数据。...请求数据验证 我们从数据流入REST API的第一步 —— 请求数据的验证 —— 保证安全性。...数据完整性验证的底线是:保证要修改的数据和服务器里的数据是一致的 —— 这是通过Etag完成。 Etag可以认为是某个资源的一个唯一的版本号。

1.6K50

如何使用云计算数据支持数字化转型

Parkinson’s UK正在结合使用云计算数据技术推动其业务的数字化转型。Dodd表示,以数据为主导的转型意味着慈善机构可以开展协作研究,并向所服务的人们展示其益处。...Dodd说,指的是分散在慈善机构中的一系列专有数据库,例如捐款的支持者、使用慈善机构服务的客户,以及研究人员与帕金森氏症的英国合作,可以治愈这种疾病。 “这是慈善机构面临的经典问题。”...Dodd曾经是英国广播公司(BBC)的创意总监,她认识到慈善机构需要更好的方式管理其数据。Snowflake数据仓库系统的实施是这种方法变革的核心。 “创建一种联合的数据方法确实为我们带来了启示。”...但这也是一种积极的体验,因为我们必须非常认真地考虑我们如何与支持者进行互动。这使我们能够清楚地了解我们的拥有者,如何与他们进行沟通,他们希望从我们这里听到什么内容。”...“拥有一个优秀的数据基础设施,然后一旦可以访问它就能够很好地使用数据,这是一项持续的任务,需要花费大量的时间精力。我们至少在这个旅程中迈出了正确的第一步。”她说。

64610

十个书写Node.js REST API的最佳实践(下)

黑盒测试是一种测试方法,通过这种方法无需知道应用内在的结构或者工作机制,就可以检测到其功能。因此依赖不会被mock或者stub,但是系统会被作为一个整体测试。...REST API数据库里的?...因此基于你的需要,你可以使用下面的任何一种方法数据库用测试数据填充: 在已知产品数据集上运行你的黑盒测试方案 在测试用例运行之前使用构造的数据填充数据库 当然,黑盒测试并不意味着你不需要做单元测试,...然后,服务器带着EtagLast-Modified正确地返回设置。...在客户端上,你使用熟悉的JavaScript操作像get,setcall远程的JSON对象一起工作。如果你了解你的数据,那么你也会了解你的API

2.3K00

骑上我心爱的小摩托,再挂上AI摄像头,去认识一下全城的垃圾!

车载软件使用经过修改的Darknet运行Yolo v3,检测结果通过一个滤波积累模块提供,该模块将避免在多个相邻视频帧中出现多次计算同一垃圾;它还将为一个”垃圾点”在大约5米半径范围内进行多次检测。...我们选择Ionic+Angular进行前端开发谷歌的Firestore坐标实时数据库。...Firebase客户端SDK包括一个通用的API,可用于订阅客户端应用程序,以添加/更新/删除 Firestore数据库上运行在VespAI上的应用程序产生的活动。...我们计划使用Firestore分布式计数器添加更多的实时统计信息,例如基于区域的每个垃圾类型的每日每周统计信息。 同样在后端。...我们正在考虑使用GeoFire支持地理查询,这将允许用户对客户定义的区域进行统计。 支持将数据导出到其他类型的数据库。比如支持基于SQL的历史数据集查询。

10.3K30

【干货】手把手教你用苹果Core MLSwift开发人脸目标识别APP

训练一个对象识别模型需要大量时间大量的数据。对象检测中最牛的部分是它支持五种预训练的迁移学习模型。转移学习迁移学习是如何工作的?...),博文中介绍了如何用TF对象检测训练一个浣熊探测器。...由于对象检测API(Object Detection API)会输出对象在图像中的位置,因此不能将图像标签作为训练数据传递给对象。...对象检测脚本需要一个方法绑定我们的模型校验文件,标签映射训练数据, 我们将使用配置文件实现。repo对五个预先训练的模型类型都有配置文件。...,我将训练测试数据上传到云存储,并使用机器学习引擎进行训练评估。

14.7K60

用ASP.NET Core 2.1 建立规范的 REST API -- 缓存并发

所以组合使用私有缓存共享缓存(客户端缓存公共/网关缓存)还是不错的。但是这种缓存还是更适用于比较静态的资源,例如图片、内容网页;而对于数据经常变化的API并不太合适。...而且因为它好像不支持ETag, 所以暂时先不使用这个. 可以考虑CacheCow,它可以生成ETag,也支持.NET Core,但是它并没有内置中间件返回304。...用于验证的ETagLast-Modified也被生成添加了,Last-Modified就是现在的时间。 ETag的生成逻辑并不是标准的一部分,这个可以由我们自己决定。...私有共享缓存,有一些缓存是两者的混合,根据你在哪使用决定给其类型。例如CacheCow。...最后客户1再更新(使用的是老的ETag): ? 返回412。 本文比较短,一些关于缓存技术的内容并没有写,距离REST的主题有点远。

69030

RavenDB文档建模--琐碎的注意事项--缓存

RavenDB 使用基于 HTTP 的 REST 用于客户端和服务端的通信,也就是说我们在操作文档的时候其实就是使用 WEB 发送 HTTP 请求,那么基于这一点 RavenDB 就可以利用 HTTP...的特性执行一些东西。...其中最常见的是 RavenDB 客户端 API 使用 HTTP 特性在客户端开启缓存。...客户端将会缓存服务器的响应、URL etag 的值,那么当有和缓存 URL 想的请求进入客户端时,我们会将其发送到服务端,同时也告知服务端,客户端存在一个特定 etag 值的请求结果。...服务端在收到信息后会检查 etag 客户端上的 etag 是否一样,如果一样就不返回数据,让客户端继续使用缓存的数据,这样就减少了网络的负载和服务端的压力。

20520

强缓存与协商缓存

对上面的请求过程可以概括如下: 浏览器在发起对于资源的请求时,会首先检查本地是否存在缓存,如果存在缓存则通过expirescache-control检查缓存是否过期,如果命中缓存且缓存未过期,则直接使用本地缓存...本地缓存未命中,则浏览器向服务器发送一个协商请求,通过last-modifiedetag验证资源是否命中协商缓存,如果命中则服务器会将这个请求响应为304,但是不会返回这个资源的数据,依然是从缓存中读取资源...,通过它提供的不同的值定义缓存策略。...Cache-Control: must-revalidate: 当使用了must-revalidate指令,那就意味着缓存在考虑使用一个陈旧的资源时,必须先验证它的状态,已过期的缓存将不被使用。...协商缓存是利用的是Last-Modified,If-Modified-SinceETag、If-None-Match这两对Header管理的。

95920
领券