如何从HTML客户端对动物群运行graphql

时间:2020-09-16 13:49:14

标签: graphql faunadb

我对graphql和动物群完全陌生,所以请让我忍受这是一个愚蠢的问题。 我看到我可以从仪表板> GRAPHQL运行graphql查询。例如粘贴以下代码

from ..base import *

@register(u'Oxford_Article')
class Oxford_Article(WebService):
    def _get_from_api(self, lang_id="en"):
        data = self.get_response("https://www.oxfordlearnersdictionaries.com/search/english/?q={}".format(self.quote_word))
        soup = parse_html(data)
        result = {'Article': u''}
        # Article
        element = soup.find('div', id='entryContent')

        if element:
            _unused = [s.extract() for s in element.select('script')]
            result['Article'] = u''.join(str(e) for e in element.contents)
        return self.cache_this(result)

    @export('Article definition')
    def fld_definate(self):
        return self._get_field('Article')

,然后点击运行按钮。但是,如何从要在浏览器中运行的html / js代码运行此查询? 在js中,我可以创建clientsdk,但不确定如何通过上述查询?

query FindAllTodos {
  allTodos {
    data {
      _id
      title
      completed
      list {
        title
      }
    }
  }
}

在谷歌搜索中,我找到了使用类似FQL之类的结构的示例

import faunadb, { query as q } from 'faunadb';
let adminClient = new faunadb.Client({
  secret: 'my-key'
});

但是我怎样才能通过graphql查询并获得相同的结果,它使我回到了graphql操场的右侧窗格中。

2 个答案:

答案 0 :(得分:1)

您可以使用诸如 curl 之类的客户端或任何GraphQL客户端。 使用curl可以发出类似以下内容的信息:

curl -X POST -H 'Authorization: Bearer <your key>' https://graphql.fauna.com/graphql -d '{ "query": "{ FindAllTodos{ data {_id title completed list { title }} }}"}'

答案 1 :(得分:0)

我可以为您提供90%的服务,但是我呈现给您的代码是使用HttpClient和RxJs Observables的Angular应用程序中的TypeScript编写的。只需付出一点努力,您就可以使用原始HTTP提取功能在JS中进行重写。

这里是Brecht De Rooms的视频,对我有很大帮助: https://www.youtube.com/watch?v=KlUPiQaTp0I

  const SERVER_KEY = 'Your server key goes here';

  const executeQuery = (query: string) => {
    const headers = new HttpHeaders().set('Authorization', 'Bearer ' + SERVER_KEY);
    return this.http.post<any>('https://graphql.fauna.com/graphql',
      JSON.stringify({ query }), { headers });
  }

  const findAllTodos = () => {
    const query = `query FindAllTodos {
      allTodos {
        data {
          _id
          title
          completed
          list {
            title
          }
        }
      }
    }`;
    return executeQuery(query);
  }

  findAllTodos().subscribe(console.log);

对我而言,障碍是了解Fauna服务器希望采用以下形式的JSON:

{ "query": "query FindAllTodos {allTodos { ... and so forth and so on ..." }

当您运行突变时,同样的结构也适用:

{ "query": "mutation AddTodo { ...etc... " }

顺便说一句,如果您的查询第一次无法正常运行(可能无法正常运行),建议您打开浏览器的开发人员的工具“网络”标签,然后检查发送到Fauna服务器的请求。查看响应。那里会有错误信息。即使有错误,响应状态也将是200(确定)。您需要查看响应以检查错误。