FLOTIQ API支持GraphQl查询。这是REST API获取数据的另一种方法。我们提供完整的,始终最新 graphQl的数据描述以及了解您的内容对象的GraphQl查询的端点。
什么是GraphQl?
GraphQl是API的查询语言。它旨在使API比REST API更灵活 - 这全都是为客户提供他们要求的数据。开发人员可以使用单个API调用。
flotiq中的GraphQl
系统支持内容对象的GraphQl查询。允许您以GraphQQL方式与系统交互的端点是:
-
GET /api/graphql/schema
-获取GraphQl架构, -
POST /api/graphql
-执行graphql查询。
验证
要验证GraphQl查询,您需要使用Flotiq Dashboard中可用的一个应用程序API键。
与整个Flotiq API一样,您可以通过以下方式传递API键:
-
X-AUTH-TOKEN
标头 -
auth_token
查询参数
注意
如果您需要有关如何获取API密钥以及如何使用它的更多信息,请转到API access & scoped keys page。
GraphQl API端点对于用户定义(scoped)API键不可用。
获取GraphQL模式
要获取完整的GraphQL模式来描述您的数据,您必须调用GET端点。它描述了当前内容类型定义的形状,包括属性类型,所需字段和关系。
请求
curl -X GET 'https://api.flotiq.com/api/graphql/schema' --header 'X-AUTH-TOKEN: YOUR_API_TOKEN'
响应
200好
正确格式化时返回
type Query {
category(id: String!): category
categoryList(page: Int, limit: Int, order_by: String, order_direction: String, filter: String): [category]
product(id: String!): product
productList(page: Int, limit: Int, order_by: String, order_direction: String, filter: String): [product]
_media(id: String!): _media
_mediaList(page: Int, limit: Int, order_by: String, order_direction: String, filter: String): [_media]
}
"""Auto generated Headless CMS type: _media"""
type _media {
id: String
url: String
size: Float
type: String
width: Float
height: Float
source: String
fileName: String
mimeType: String
extension: String
externalId: String
}
"""Auto generated Headless CMS type: category"""
type category {
id: String
name: String
description: String
}
"""Auto generated Headless CMS type: product"""
type product {
id: String
name: String
slug: String
price: Float
categories: [category]
description: String
productImage: [_media]
productGallery: [_media]
}
执行GraphQl查询
要对对象进行查询,您需要调用POST /api/graphql
GraphQl端点。我们可以指定两种类型的查询 - 负责检索单个对象并列出对象。
查询单个对象
要获得单个对象,您需要传递要在响应中接收的对象标识符和字段。示例查询GraphQl语言以获取具有ID product-1
的产品的id
和标题,看起来像:
GraphQl
query {
products(id:"product-1") {
id
title
}
}
要将此查询传递给Flotiq,您需要致电:
请求
curl -X POST 'https://api.flotiq.com/api/graphql' \
--header 'X-AUTH-TOKEN: YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query{products(id:\"product-1\"){id,title,}}"}'
Response
200好
{
"data": {
"products": {
"id": "product-1",
"title": "Green Tea"
}
}
}
列表对象
在列出对象时,您可以使用可选参数page
,limit,
order_by,order_direction,
或filter
。
GraphQl
query {
productsList(limit: 2, order_by: "title", order_direction: "asc") {
id
title
}
}
要将此查询传递给Flotiq,您需要致电:
请求
curl -X POST 'https://api.flotiq.com/api/graphql' \
--header 'X-AUTH-TOKEN: YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{"query":"query {productsList(limit: 2, order_by: \"title\", order_direction: \"desc\") {id, title}}"}'
响应
200好
{
"data": {
"productsList": [
{
"id": "product-3",
"title": "Rooibos"
},
{
"id": "product-2",
"title": "Earl Grey"
}
]
}
}
关系解决(水合)
GraphQLS灵活性还涵盖对象关系(例如产品具有类别)。在flotiq中,相关对象是根据DataSource
的类型自动解决的。
例如,当我们有一个产品对象时:
{
"id":"product-1",
"categories":[
{
"dataUrl":"/api/v1/content/categories/",
"type":"internal"
}
]
}
和类别:
{
"id": "category-1",
"name": "Tea"
}
用于列表对象的GraphQl查询(包括类别)看起来像:
GraphQl
query {
productsList(limit: 1) {
id
title
categories {
id
name
}
}
}
请求
curl --request POST \
--url 'https://api.flotiq.com/api/graphql?auth_token=__YOUR_AUTH_TOKEN__' \
--header 'content-type: application/json' \
--data '{"query":"query{productsList(limit:1){id,title,categories{id,name}}}"}'
响应
200好
将自动返回自动解决关系:
{
"data": {
"productsList": [
{
"id": "product-3",
"title": "Rooibos",
"categories": [
{
"id": "category-1",
"name": "Tea"
}
]
}
]
}
}
您可以看到,相关元素category
被获取,包括其属性。
使用失眠客户端探索
GraphQl查询可能很复杂。为了有效地与FlotiQ GraphQl API进行交互,我们建议您使用诸如失眠之类的应用。它有助于根据您当前的模式创建自动完成的查询,验证输入并显示响应的预览。
使用端点https://api.flotiq.com/api/graphql?auth_token=YOUR_AUTH_TOKEN: