到神箭手看看什么才是真正的获取数据API

大家肯定遇到过这样的情况,爬虫爬到了很多数据,可是数据在云端,但是又不想直接导出全部数据,只希望根据自己的需要获取数据。不少其他爬虫软件都提供了通过api获取数据的功能,很多朋友问我,神箭手有没有这样的功能呢?每当这个时候,我都会微微一笑,神箭手作为对用户体验追求极致的平台,怎么会连如此基础的功能都没有呢?我们不仅有,还免费,而且强大到不敢想象。今天就给大家介绍下神箭手上这个牛逼闪闪的功能-graphql。

qq20181229-1453422x

最初我们在设计这个请求API的时候就注意到,由于请求的条件千变万化,一个简单的按条件查询数据显然是不满足需求的,但是如果设计的机制过于复杂,又可能带来接口不统一或者非常不好理解的情况。这个时候我们注意到了GraphQL,这个是由Facebook主导开源的一个网络请求协议,简单来说就是支持通过http形式对数据库进行SQL查询,那么这个正是我们想要的,并且既然是大厂的作品,从规范性和兼容性角度都有着不少的优势。下面我们一起来怎么用GraphQL请求神箭手上托管的数据:

零.GraphQL能做什么

GraphQL支持的查询包括,根据字段条件,包括字段大于,小于,等于,大于等于,小于等于,不等于,in数组。支持按照id进行排序,包括正序,倒序。支持仅查询指定字段,支持限制条数,也支持分页查询语句。同时考虑到大数据集大offset的性能问题,我们提供了end_cursor作为优化方案。另外我们也开放了数据的内部字段包括爬取时间,爬取URL等作为查询条件。

一.文档地址:

有实力的同学可以直接移步文档:https://docs.shenjian.io/develop/platform/graphql/overview.html

二.请求地址:

https://graphql.shenjian.io/?user_key=[用户key]×tamp=[秒级时间戳]&sign=[签名]&source_id=[数据源ID]&query=[查询请求]

请求地址中一共有5个需要填入的参数,其中[用户key]可以从神箭手后台获取,[秒级时间戳]和[签名]是用来验证请求合法性的,具体的算法可以参考具体的文档。[数据源ID]则是需要查询的具体数据源的ID,在神箭手后台复制既可。最最重要的就是[查询请求],这个查询就是对应的graphql的请求。

三.GraphQL语法

由于功能强大,GraphQL语法也支持多种多样,这里我们先介绍一个基本的graphql语句的组成,一个基本的GraphQL语句分为三个部分,分别是开头的source,中间的查询条件(小括号中的语句),和后面的查询字段(大括号中的语句):

source(limit:10,name:{eq:"sjs"},__id:{lte:100},sort:"asc"){
    data{
        __id,
        name
    }
}

开头的source是不变的,中间的查询条件除了支持基本字段的条件,如此处的name和__id,也支持limit和sort语法。后面的查询字段则相对简单。

 

好了,今天对GraphQL的介绍就到这里,简单的语法,强大的查询能力,是不是非常好用呢。更多的GraphQL示例可以参考开发文档中的内容。

分享至微信朋友圈 ×
打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。