使用HTTP GET POST方式实现GraphQL查询

除了使用GraphiQL客户端工具以及PostMan外,也可以使用HTTP GET和POST来发送REST请求获取数据,请求格式如下:

示例1
GET:
http://localhost:8089/graphql?query={getTypeList{status statusDesc data{name}}}
这个等同于在工具里面输入:
{
  getTypeList {
    status
    statusDesc
    data {
      name
    }
  }
}

示例2
POST:
http://localhost:8089/graphql
Content-Type: application/json
RequestBody:
{
  "query": "{getTypeList{status statusDesc data{name}}}",
  "operationName": "",
  "variables": {}
}
这个等同于在工具里面输入:
{
  getTypeList {
    status
    statusDesc
    data {
      name
    }
  }
}

以上两个示例中,主要用到三个参数:
query这个里面是压缩后的GraphQL查询语句,必填
variables 查询语言中使用到的对象输入类型的值,选填
operationName 操作名称,选填,查询语句中有多个操作时必填,一般无特殊情况置空””即可

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GraphQL是一种用于客户端和服务器通信的技术,它可以帮助开发人员更轻松地构建和查询数据。下面是使用GraphQL在前端中的一个示例代码: const query = ` query { allBooks { title author } } `; fetch('/graphql', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: JSON.stringify({query}) }) .then(r => r.json()) .then(data => console.log('data returned:', data)); ### 回答2: GraphQL是一种用于前端开发的查询语言和运行时,在前端中使用GraphQL需要通过客户端库与后端服务器进行通信。下面是一个简单的代码示例,展示了如何在前端使用GraphQL。 首先,需要在项目中安装所需的依赖库,如`graphql`和`apollo-client`。可以使用npm或yarn来安装: ```bash npm install graphql apollo-client ``` 接下来,需要创建一个Apollo客户端来处理与GraphQL服务器的通信。可以在项目的入口文件或任何需要使用GraphQL的组件中创建: ```javascript import { ApolloClient, InMemoryCache } from 'apollo-client'; import { createHttpLink } from 'apollo-link-http'; import { ApolloProvider } from '@apollo/react-hooks'; const httpLink = createHttpLink({ uri: 'http://example.com/graphql', // 替换为实际的GraphQL服务器URL }); const client = new ApolloClient({ link: httpLink, cache: new InMemoryCache(), }); // 将客户端提供给整个应用程序 ReactDOM.render( <ApolloProvider client={client}> <App /> </ApolloProvider>, document.getElementById('root') ); ``` 现在,可以在前端组件中使用`useQuery`和`useMutation`钩子函数来发起GraphQL查询和变更操作。这些钩子函数是来自`@apollo/react-hooks`包的一部分。 ```javascript import React from 'react'; import { useQuery, useMutation } from '@apollo/react-hooks'; import { gql } from 'apollo-boost'; // 定义GraphQL查询和变更操作 const GET_USERS = gql` query GetUsers { users { id name email } } `; const CREATE_USER = gql` mutation CreateUser($input: UserInput!) { createUser(input: $input) { id name email } } `; function UserList() { const { loading, error, data } = useQuery(GET_USERS); if (loading) return <p>Loading...</p>; if (error) return <p>Error :(</p>; return ( <ul> {data.users.map(user => ( <li key={user.id}>{user.name} - {user.email}</li> ))} </ul> ); } function UserForm() { const [createUser] = useMutation(CREATE_USER); const handleSubmit = async (event) => { event.preventDefault(); const form = event.target; const input = { name: form.name.value, email: form.email.value, }; await createUser({ variables: { input } }); form.reset(); }; return ( <form onSubmit={handleSubmit}> <input type="text" name="name" placeholder="Name" required /> <input type="email" name="email" placeholder="Email" required /> <button type="submit">Create User</button> </form> ); } function App() { return ( <div> <h1>User List:</h1> <UserList /> <h1>Create User:</h1> <UserForm /> </div> ); } export default App; ``` 以上代码示例演示了在前端使用GraphQL的基本流程。使用`useQuery`钩子函数发起查询操作,并在返回的数据中处理加载状态和错误。使用`useMutation`钩子函数发起变更操作,并使用`variables`选项传递变量数据。 ### 回答3: GraphQL 是一种用于前端开发的查询语言和运行时环境。以下是一个代码示例,展示了如何在前端使用 GraphQL: 1. 安装所需的库和依赖项: 首先,在你的项目目录下,通过 npm 或 yarn 安装以下库: - graphql: 提供了 GraphQL 的核心功能; - apollo-boost: 提供了一些 Apollo 客户端需要的必要设置。 ```bash npm install graphql apollo-boost ``` 2. 创建一个 Apollo 客户端: 在你的代码中,导入 ApolloClient、HttpLink 和 InMemoryCache 并创建一个 Apollo Client 实例。 ```javascript import { ApolloClient, HttpLink, InMemoryCache } from 'apollo-boost'; const httpLink = new HttpLink({ uri: 'http://example.com/graphql', // 替换为你的 GraphQL API 地址 }); const client = new ApolloClient({ link: httpLink, cache: new InMemoryCache(), }); ``` 3. 编写 GraphQL 查询使用 GraphQL 查询语法编写你需要的查询。 ```javascript import { gql } from 'apollo-boost'; const GET_USERS = gql` query { users { id name email } } `; ``` 4. 发起查询使用 Apollo Client 的 `query` 方法来发起查询,然后处理返回的数据。 ```javascript client.query({ query: GET_USERS }).then((response) => { console.log(response.data.users); }); ``` 5. 在组件中使用查询结果: 将查询结果传递给你的组件,并在 render 方法中使用它。 ```javascript import React from 'react'; class UserList extends React.Component { state = { users: [], }; componentDidMount() { this.fetchUsers(); } fetchUsers() { client.query({ query: GET_USERS }).then((response) => { this.setState({ users: response.data.users }); }); } render() { return ( <div> <h1>User List</h1> <ul> {this.state.users.map((user) => ( <li key={user.id}> {user.name} - {user.email} </li> ))} </ul> </div> ); } } export default UserList; ``` 这只是一个简单的示例,演示了如何在前端使用 GraphQLGraphQL 的优点之一是可以根据特定需求编写精确的查询,从而减少数据传输和解析的开销。在实际开发中,你还可以使用更复杂的查询、变量和更多功能来满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值