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

GraphQL是API的未来,但它并非银弹

这篇文章是对 Kyle Schrade 的文章“为什么使用 GraphQL”的回应。这并不是批评。这篇文章是一个很好的讨论基础,因为它代表了我在社区中经常听到的观点。...事实上,许多专家认为,如果不是非常必要,就应该尽量不引入 API 版本。话虽如此,是什么阻碍了你运行两个版本的 GraphQL 模式?我不认为这是个好主意,但技术上是可行的。...我赞同,GraphQL 是 API 的未来,但是出于不同的原因。 较好的性能和较小的有效负载并不是 GraphQL 特有的特性。...10 我支持使用 GraphQL 的原因 GraphQL 本身几乎没什么用。是工具使得 GraphQL 如此强大。是社区,是我们!...只是对于业界目前正在转向的这类应用程序,它们不是合适的工具。我认为,REST API 是内部 API、合作伙伴 API 和服务器间通信的完美工具。

2.6K10

我是如何根据豆瓣api来理解Restful API设计的

1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思。它是在Roy Fielding博士论文首次提出。...REST本身跟http无关,但是目前http是与它相关的唯一实例。REST有着优雅、简洁的特性,本文是根据豆瓣api来谈谈自己对restful的一些理解。...query ] [ "#" fragment ] uri代表的是一种资源,要做到优雅、简洁。...把动作转换成资源 比如,上述接口中,用户收藏某本书对外暴露的接口是”/v2/book/:id/collection”,收藏动作通过post方法来展现,而不直接写着api中,collection “收藏...使用权限验证,shiro ,或者自己建数据库(用户、角色、权限) 7.api文档 接口文档的编写至关重要,最好是写一个在线接口文档。接口文档能够方便团队查阅,减少不必要的沟通。

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

    这样的API网关查询接口优化,我是被迫的

    简单描述一下系统架构,采用前后端分离结构,上面说的用户中心页面属于前端系统,由前端系统发起HTTP请求到后端的API网关系统,再由API网关和各个后端的子系统通讯获取数据,上述的基本信息由客户中心子系统提供...是的,我翻看了几遍后端代码确认没看错,上述页面上的信息是通过API网关系统中的一个查询接口得到的,并且接口的处理逻辑使用了单线程线性处理,也就是下面这样的。 ?...于是找负责前端的大佬沟通沟通,我提供三个接口分别用于查询不同的数据,前端系统请求不同的接口查询不同的数据,这样查询结果会更快,用户体验会更好,没想到大佬一句话就把我怼回来了“项目排期都满了,没人手配合你了...再设想一下,如果baseInfoTask.get()执行后还有其它数据转换的行为,那么它后面的creditInfoTask.get()和bankInfoTask.get()就会延后执行,所以最好的办法是随机...小结 上面使用多线程优化的方案是当时迫不得已的办法,如果可以分为多个网关接口,会方便很多,这样优化的重点就可以放在SQL调优和代码逻辑调整上面,并且也不用考虑单线程处理异常如何组装返回数据。

    99910

    我是如何给有序数组去重的?

    问题 给定一个有序数组,要删除数组重复出现的元素,使得每个元素只出现一次,然后返回移除重复数组后的新长度 示例: 假设给定一个数组 nums = [1,2,4,4],删除重复出现的元素 4 后,原数组变成...nums = [1, 2, 4],此时新的数组长度为 3; 解决思路 数组原地操作 数组原地操作,此时无需创建新的数组,只需要在原来的数组上操作即可。...相当于首先要找到数组中重复的元素,然后将重复的元素移除,此时就涉及到数组中的删除操作,相关知识点可以看我的另一篇文章 数组的增删改查。...nums) { // 数组初始容量 int length = nums.length; // 我们假定数组最后一个元素是唯一的,然后对于其他的每个元素,如果自身与它后边的数相同...答案是:当然有! 利用双指针的思想,既可以将空间复杂度控制在 ,也可以将时间复杂度控制在 。

    1.7K40

    这可能是我用过最“强大”的API

    (nameStartsWith=name) 第三方库地址: https://pypi.org/project/marvel/ Marvel 的这个 API,我觉得是个非常好的练手工具。...作为一个学习者,你可以从使用中学到: 公钥、私钥、MD5加密的使用(接口权限验证) API的调用,参数传递,JSON返回数据的处理 多维度数据的整理分析 还有,英文文档的阅读 让我有点遗憾的是,数据中并没有太多英雄角色相关的数据...对于这个接口的应用,我有几个思路供参考: 做一个爱好者网站或者小程序,对数据提供检索和整理展示 数据分析,看看哪些角色最受欢迎,哪个作者最勤奋,角色之间的相互关系等 小游戏,比如集卡之类。...(当然,非商业的) 早前我也推荐过豆瓣的 API,不过豆瓣现已把开发者页面下线,无法查看具体接口说明,之后会不会对外关闭也很难说了。...另外,在使用时还有一些要求,如果你之后将作品对外展示,请务必注意: 请求上限 1000次/天(但在我的个人页面上看到是 3000),并且需要设定请求来源网址(referrer)。

    1.1K10

    API 接口的安全设计验证,我是这么做的!

    概述 与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间戳,token,签名三个部分来保证API接口的安全性 ?...= timestampLong / 1000; return timestampsStr; } 需要跟当前服务器时间进行对比,如果超过一分钟,就拒绝本次请求,节省服务器查询数据的消耗...拦截器 每次请求都带有这三个参数,我们都需要进行验证,只有在三个参数都满足我们的要求,才允许数据返回或被操作。...@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object...printWriter.write(jsonObject.toJSONString()); return false; } //如果redis存在ticket就认为是合法的请求

    1.2K20

    如何在Windows系统上使用Object Detection API训练自己的数据?

    前言 之前写了一篇如何在windows系统上安装Tensorflow Object Detection API? 然后就想着把数据集换成自己的数据集进行训练得到自己的目标检测模型。...动手之前先学习了一波别人是如何实现的,看了大多数教程都有一个小问题:用VOC2012数据集进行训练当做用自己的数据集。 然而,初心想看的是自己的数据集啊!...于是就自己来撸一篇教程,方便自己也给别人一些参考吧~ 目录 基于自己数据集进行目标检测训练的整体步骤如下: 数据标注,制作VOC格式的数据集 将数据集制作成tfrecord格式 下载预使用的目标检测模型...数据标注,制作VOC格式的数据集 数据集当然是第一步,在收集好数据后需要进行数据的标注,考虑到VOC风格,这里推荐使用LabelImg工具进行标注。 ?...训练模型只需要运行object_detection/legacy路径下的train.py程序即可。(当然object_detection API安装是大前提,具体看上一篇文章!)

    2K40

    这些年我用过的API文档工具,个个是精品!

    这些年用过不少API文档工具,也写过不少相关的文章,我发现哪种API文档工具更好用一直都是大家比较关心的话题。今天整理了下我曾经用过的7种API文档工具,每个都有详细的使用教程,肯定有你中意的一种!...Swagger Swagger是一款非常流行的API文档工具,它能帮助你简化API文档的开发,极大提高开发效率,之前在mall项目中就是使用的它。...,返回一堆JSON数据时无法折叠这类问题。...YApi正是这样一种工具,YApi是高效、易用、功能强大的API管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。...YApi在Github上已累计获得了18K+Star,具有优秀的交互体验,YApi不仅提供了常用的接口管理功能,还提供了权限管理、Mock数据、Swagger数据导入等功能,总之功能很强大!

    1.9K30

    到底什么是数据结构?我认为是这样的

    我们来举一个实例:int[] myArray = { 5, 9, 15, 22, 30 }; 这里我声明了一个数组,首先数组中五个数字,他们在就叫数据元素,不叫项。因为数据元素是数据基本单位。...---- 我们重新定义一个数组:string[] myArray = {“张三|男”,“李四|男”,“王五|女” }; 这里面三个string就可以理解为数据元素,因为我们可分割两部分,所以是元素还是项是看自己传入的数据...---- 接着上面那个int数组讲,首先数据有了:5,9,15,22,30. 了解过数组的朋友应该知道:数组其实顺序非常重要,所以存储结构数组是“顺序存储结构”,然后逻辑结构是一个线性表。...但是我认为仅仅说元素和元素上关系构成不够,应该把关系说的在明确一点,关系就是数据的存储结构和数据之间的逻辑结构,我认为这样才明确。 什么是算法? 就是在上述描述的数据结构的基础上,进行操作,就是算法。...比如对上述的数组进行“增删改查”这就是算法。 主要现在很多课程在讲数据结构时,不免都会讲到算法,其实两者是可以分开的。 数据结构就是如何存储,算法就是此数据结构上进行的一些操作。

    83710

    Vue2.X是如何利用Object.defineProperty()实现数据绑定的

    Vue2.X是如何利用Object.defineProperty()实现数据绑定的 上一篇文章写到了Object.defineProperty的使用,这篇文章说一下Vue是如何利用这个方法实现数据绑定的...dep对象就相当于一个调度中心的作用,如果有数据用到这个属性,它就会自动收集该属性到调度中心,如果某属性发生了改变,那就会通知调度中心来更新视图。 再看看dep方法和它的功能。...{ // sub 是某个Watcher 具体调用某个Watcher的update 方法 sub.update() }) } // 添加订阅者的方法 Dep.prototype.addSub...(也就是编译过程收集依赖) 当数据发生了变化,会触发setter,从而想Dep中的依赖(watcher)发送通知。(交互过程,调度中心去通知订阅器抓紧更新)。...(订阅器修改对应的值,页面参数随之相应,实现响应) 当然,这才只是单向绑定,双向绑定就是说视图更改数据,这个就比较简单,在编译过程中将标签绑定input方法,修改对应的数据即可。

    63920

    API 安全难在哪?这篇是我见过讲得最透的架构方案

    API安全的"危机四伏" 在这个API满天飞的时代,你的API就像是一扇扇通往数据宝库的大门。如果安全防护不到位,那就相当于把家门钥匙挂在门外,还贴个小纸条写着"欢迎光临"。...现代应用架构中,API已经成为了连接前端、后端、第三方服务的"血管",一旦这些血管出现问题,整个系统就可能面临: 数据泄露:敏感信息被恶意获取 服务滥用:API被恶意调用导致资源耗尽 注入攻击:恶意代码通过...安全架构设计的五大支柱 好的API安全架构就像一座坚固的城堡,需要多道防线: 这五大支柱缺一不可,就像五根手指,握成拳头才有力量。 3. 身份认证与授权的"双保险" 身份认证:你是谁?...关键监控指标: 调用量异常:突然的流量激增可能是攻击信号 错误率飙升:可能存在系统问题或攻击行为 响应时间异常:可能是性能问题或DDoS攻击 异常IP:来自可疑地理位置的大量请求 认证失败:频繁的认证失败可能是暴力破解...从认证授权的城门,到数据加密的护城河,再到监控告警的瞭望塔,每一道防线都至关重要。 在这个数字化的时代,API就是连接世界的桥梁,让我们一起把这座桥建得更加安全、更加稳固!

    32410

    我是如何学习数据结构与算法的?

    主要是最近几天后台有读者问我是如何学习数据结构与算法的,有没有什么捷径,是要看视频还是看书,去哪刷题等…..而且有些还是大三大四的,搞的我都替你们着急、担心….....这些基础的数据结构与算法,我是在大一第二学期学的,我没看视频,我是通过看书学的,那时候看的书是: 1、算法分析与分析基础:这本比较简单,推荐新手看。...具体可以看我的另外一篇文章,里面是介绍这几本书的: 算法与数据结构书籍与视频福利 说实话,我那一学期的时间几乎都花在数据结构与算法上,但刷的题很少,只是书本上的一些例题。...在这里说一下前阵子有个非常火爆的专栏—-【数据结构与算法之美】 我没买这个专栏,我想说的是,买了就一定要去看,千万别浪费。...我上面说了,可以先学习最基本的,然后刷题,刷题是一个需要长期坚持的事情,一年,两年。在刷题的过程中,可以穿插学习其他数据结构。

    1.7K10

    数据分析是如何改变了我的职业轨迹

    作者 郑槊 本文为CDA学员投稿作品 三月份刚来上海参加CDA的数据分析就业班培训时,我没想到这次选择将会改变我未来的职业轨迹。...其实数据分析或数据挖掘这一行真正火起来是从17年开始的,那个时候市场上这方面的人才还是比较紧缺的,但相应的岗位也比较少,关于这方面的学习社区也大多从17年开始活跃起来。...我一直在从各种渠道上了解现在的就业市场,偶然的机会我从经管之家上了解到了CDA数据分析师。经管之家是原来的人大经济论坛,考经管类专业的学生大多都熟悉这个平台,我也觉得是比较靠谱的。...在经过多方对比并与家人商量后,我决定去上海脱产参加数据分析就业班,一方面是想出去散散心,摆脱失利后地失落感,另一方面也是真地想系统地学习数据分析,想在数据分析方向上开启我的职业生涯,而这个行业在我看来是比较有潜力的...我也会感谢CDA能提供这样一个学习的平台,帮助更多人了解数据分析这一行,帮助更多人开启他们关于数据行业的职业生涯。

    90920

    我是谁?我从哪来?我要到哪去?——聊聊数据血缘分析的“前世今生”

    我是谁?我从哪来?我要到哪去?...放心,文章不装、不硬,不会整超学术的东西,咱就用你一看就懂的方式讲清楚。一、数据血缘到底是个啥?一句话讲明白假设你领导问你:“这个GMV数是怎么算的?为啥今天比昨天少30%?”...我总结了三点特别人间真实的原因:①数据链路太复杂,不追踪就会“黑箱”现代大数据体系中:一张源表→五张宽表→十几个指标→百来张报表SQL嵌SQL,任务套任务,没有血缘谁都不敢乱动。...三、数据血缘的三种类型(很多人只知道第一种)类型说明举例表级血缘表之间的输入输出关系A→B→C字段级血缘字段之间的依赖关系gmv=price*qty任务级血缘DAG任务之间的链路Airflow任务调度真正有价值的是第二种...一个强大的数据血缘系统能让团队:出问题能“秒定位”改ETL不再恐惧指标口径不再混乱审计不再手忙脚乱数据开发像写代码一样可维护如果说数据质量是“地基”,那数据血缘就是“电路图”,让你知道哪里通电、哪里短路

    31610

    大数据不再是大数据,大数据依然是大数据--我的一篇严肃总结

    由于各种原因,我似乎缺了一篇严肃的文章,来阐述我本人对大数据这个领域的看法,以至于有人看到我这篇文章里的这个观点,就扩展到了我认为的那个领域里的那个观点。...我还是决定严肃的写一篇文章,阐述一下我个人的观点。这样一来,多少有据可查。 要说大数据领域到底怎么样,我们就得先定义一下大数据到底是什么东西?...这个我想谷歌知道,抄谷歌的微软很早就清楚。同样是抄,HDFS这个抄的一个烂。这个锅我觉得应该Doug Cutting来背。 2011年VLDB是在西雅图开的,微软很多人过去了。...这说明只要在数据分析这个领域内,自身的工具有真正帮助客户的价值,那么公司依然可以表现的非常好。 换句话说,我相信目前还没上市的“大数据“公司里,类似DataBricks这样的我也很看好。...总而言之,到了今天对于广大新人来说,如果你是想学习数据分析的能力和工具的使用的话,那么无论是大数据的工具还是数据库的工具,总是相通的也不会落伍。

    78430

    大数据那些事(23):我是怎么分析Dremel系统的

    所以我觉得我有必要对自己这个系列作个简单小结,并在这个小结之外,探讨一下我是怎么样得出了这些结论,以及如果说是一个小白,有志于去学习大数据体系架构的一些东西,应该从什么地方开始。...我的大数据系列的文章,严格的来讲是混杂了三类不同的内容: 江湖八卦,大数据历史 一些基础知识和技术的普及和介绍 我个人对于不同系统的观点和评价 我想对于第一类的话题,吃瓜群众多少都可以看得明白,如果看不明白...这可能也是我文章系列里面喜欢的人读起来非常的high,而更多的人会觉得一头雾水的地方。从另外一个方面看,其实这多少也反应了这个读者是不是在大数据体系架构上有过足够的积累,尤其是开发经验上的积累。...在数据库系统里,有个叫Volcano的系统,是Goetz做的。这个系统非常的有名,其中之一是确立了现代数据库的execution model。...关于我对Dremel的结论以及我是如何做出这些结论的,我就写到这里吧,希望能给大家,尤其是那些留言给我,希望我能更详细解释的朋友一个参考。

    85760

    我是如何找到Donald Daters应用数据库漏洞的

    这意味着任何人都可以访问他们的数据库……现在,我可以查看到数据库中所有用户信息(包括姓名,头像,身份,平台,通知),甚至是使用他们的token,查看所有私人消息等。...为了与Donald Daters的Firebase数据库进行通信,我需要找到他们的Firebase设置(api密钥,数据库URL以及storage bucket)并将它们替换到我的google-services.json...通过使用binwalk,我提取出了一堆的javascript文件。 ? 使用grep命令,我很快就找到了api key。...有了这个POC,我可以查看所有私人消息 - 用户信息 - 或是删除:消息,用户,甚至是整个数据库中的内容。https://t.co/7doErhzYdY: ?...我是一个有操守的白帽子,但我可以告诉你添加这一小行“myRef.setValue(“”)”,你将会清空整个数据库。

    8.2K20
    领券