使用GraphQl开发微信小程序
我写了一个小程序,想学习graphql并练习一下。现在我有了这个教程
Apollo
Apollo 是一个关于GraphQl的完整工具包。后端语言有java、php、nodej等各种。它是一个对Future进行封装的前端框架,使得Future变得简单易用。 ,还有更多优化的类库。 vue、react 等。
小程序
但是小程序与传统网站不同。小程序没有浏览器环境,也没有使用自己的API。显然,像Apollo这样来自好社区的好工具不能用在小程序中。
毕竟小程序专业性比较强,想要用就得自己动手。
原理
其实GraphQl请求和Restfel api请求是一样的,都是HTTP请求。只是GraphQl对于一个请求只有一个输入,通常是graphql服务器输入,通常是/graphql
并且发布了,大家。因此,
GraphQl的请求只不过是一个post方法请求http://xxxx.com/graphql
。然后后端将参数传递给graphql,这样graphql服务器就可以根据不同的参数执行不同的方法,从而实现不同的界面效果。
明白这个原理后,就可以开始慢慢玩了。
Start
var Fly=require("../lib/wx.js") //wx.js is your downloaded code
var fly=new Fly(); //Create an instance of Fly
import message from './message'
import { create_client } from 'tiny-graphql-client'
const client =create_client( async( body)=>{
const res_data = await fly.post("/graphql",body)
const {data ,errors}=res_data;
if(errors){
message.error(errors[0].message);
throw errors;
}
return res_data.data;
})
export default client;
fly
是一个兼容小程序的http组件。您可以使用原生请求来替换它。tiny-graphql-client
是一个由其他人包装的graphql实用程序类。详情:https://github.com/xialvjun/tiny-graphql-client- graphql返回的字段必须有
data
,无论成功还是失败。仅当发生错误时才会显示errors
字段。因此,在处理graphql全局返回时,我们首先判断是否存在数组errors
。如果是这样,则发生错误。没有什么意味着成功。
使用
查询
user=await this.$parent.client.run(`query getUser{getUser{id nickName avatarUrl space nowSpace album}}`);
变异
let bucket=await this.$parent.client.run(`mutation createBucket($name:String!){createBucket(name:$name){id name createdAt}}`,this.album);
使用前一定要指定上面封装的客户端。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。