当前位置: 首页 > news >正文

西安网站策划公司做销售有什么技巧和方法

西安网站策划公司,做销售有什么技巧和方法,网站上传小马后怎么做,网站音乐播放器代码https://blog.csdn.net/qq362228416/article/details/50854980 背景 随着react的开源,facebook相继开源了很多相关的项目,这些项目在他们内部已经使用了多年,其中引起我注意的就是本次讨论的是graphql,目前官方只有nodejs版&#…

https://blog.csdn.net/qq362228416/article/details/50854980


背景

随着react的开源,facebook相继开源了很多相关的项目,这些项目在他们内部已经使用了多年,其中引起我注意的就是本次讨论的是graphql,目前官方只有nodejs版,由于很多公司的后台技术栈都是java,所以便有了graphql的java版实现,在github上可以找到,废话不多说,直接看代码吧,具体介绍还是去看官网吧,不然就跑题了。

GraphQLSchema

Schema相当于一个数据库,它有很多GraphQLFieldDefinition组成,Field相当于数据库表/视图,每个表/视图又由名称、查询参数、数据结构、数据组成.

1) 先定义一个数据结构(GraphQLOutputType)字段,然后定义一个初始化方法

private GraphQLOutputType userType;private void initOutputType() {/*** 会员对象结构*/userType = newObject().name("User").field(newFieldDefinition().name("id").type(GraphQLInt).build()).field(newFieldDefinition().name("age").type(GraphQLInt).build()).field(newFieldDefinition().name("sex").type(GraphQLInt).build()).field(newFieldDefinition().name("name").type(GraphQLString).build()).field(newFieldDefinition().name("pic").type(GraphQLString).build()).build();
}

2)再定义两个表/视图,它包括名称,查询参数,数据结构,以及数据检索器

    /*** 查询单个用户信息* @return*/private GraphQLFieldDefinition createUserField() {return GraphQLFieldDefinition.newFieldDefinition().name("user").argument(newArgument().name("id").type(GraphQLInt).build()).type(userType).dataFetcher(environment -> {// 获取查询参数int id = environment.getArgument("id");// 执行查询, 这里随便用一些测试数据来说明问题User user = new User();user.setId(id);user.setAge(id + 15);user.setSex(id % 2);user.setName("Name_" + id);user.setPic("pic_" + id + ".jpg");return user;}).build();}/*** 查询多个会员信息* @return*/private GraphQLFieldDefinition createUsersField() {return GraphQLFieldDefinition.newFieldDefinition().name("users").argument(newArgument().name("page").type(GraphQLInt).build()).argument(newArgument().name("size").type(GraphQLInt).build()).argument(newArgument().name("name").type(GraphQLString).build()).type(new GraphQLList(userType)).dataFetcher(environment -> {// 获取查询参数int page = environment.getArgument("page");int size = environment.getArgument("size");String name = environment.getArgument("name");// 执行查询, 这里随便用一些测试数据来说明问题List<User> list = new ArrayList<>(size);for (int i = 0; i < size; i++) {User user = new User();user.setId(i);user.setAge(i + 15);user.setSex(i % 2);user.setName(name + "_" + page + "_" + i);user.setPic("pic_" + i + ".jpg");list.add(user);}return list;}).build();}

3)接着定义一个Schema,并将其初始化,它包含一个名称,以及一个或多个表/视图(Field)

    private GraphQLSchema schema;public GraphSchema() {initOutputType();schema = GraphQLSchema.newSchema().query(newObject().name("GraphQuery").field(createUsersField()).field(createUserField()).build()).build();}

4)完成以上步骤之后,还需要定义一个model,类名不限,但是结构需要满足前面定义的数据结构,而且必须是public的

public class User {private int id;private int age;private int sex;private String name;private String pic;// getter, setter...
}   

5)之后写一个main方法,来测试一下

public static void main(String[] args) {GraphQLSchema schema = new GraphSchema().getSchema();String query1 = "{users(page:2,size:5,name:\"john\") {id,sex,name,pic}}";String query2 = "{user(id:6) {id,sex,name,pic}}";String query3 = "{user(id:6) {id,sex,name,pic},users(page:2,size:5,name:\"john\") {id,sex,name,pic}}";Map<String, Object> result1 = (Map<String, Object>) new GraphQL(schema).execute(query1).getData();Map<String, Object> result2 = (Map<String, Object>) new GraphQL(schema).execute(query2).getData();Map<String, Object> result3 = (Map<String, Object>) new GraphQL(schema).execute(query3).getData();// 查询用户列表System.out.println(result1);// 查询单个用户System.out.println(result2);// 单个用户、跟用户列表一起查System.out.println(result3);}

输出:

{users=[{id=0, sex=0, name=john_2_0, pic=pic_0.jpg}, {id=1, sex=1, name=john_2_1, pic=pic_1.jpg}, {id=2, sex=0, name=john_2_2, pic=pic_2.jpg}, {id=3, sex=1, name=john_2_3, pic=pic_3.jpg}, {id=4, sex=0, name=john_2_4, pic=pic_4.jpg}]}
{user={id=6, sex=0, name=Name_6, pic=pic_6.jpg}}
{user={id=6, sex=0, name=Name_6, pic=pic_6.jpg}, users=[{id=0, sex=0, name=john_2_0, pic=pic_0.jpg}, {id=1, sex=1, name=john_2_1, pic=pic_1.jpg}, {id=2, sex=0, name=john_2_2, pic=pic_2.jpg}, {id=3, sex=1, name=john_2_3, pic=pic_3.jpg}, {id=4, sex=0, name=john_2_4, pic=pic_4.jpg}]}

6)最后把main方法里面的代码放到web层,只需要定义一个query参数,很容易就把查询服务搭建好了,dataFetcher 里面还是调用原来的查询接口

7)引入maven依赖

<dependency><groupId>com.graphql-java</groupId><artifactId>graphql-java</artifactId><version>2.0.0</version>
</dependency>

关于graphql查询什么定义,看看这个或许对你有帮助

json

{id=6, sex=0, name="Name_6", pic="pic_6.jpg"
}

query

{id,sex,name,pic
}

后面那部分,其实就是json字符串,去掉=和value的结果,还是可读的

结语

graphql 带了一种全新的思维方式,可以简化web api的开发,由客户端指定需要什么数据,服务端返回什么数据,减少不必要的流量传输,对移动端友好,还提供多种数据聚合查询,多个查询只是用一个请求,既满足api最小粒度,又满足前端需要,减少请求,提高性能。



文章转载自:
http://dinncocarbonise.tpps.cn
http://dinncosopor.tpps.cn
http://dinncominorca.tpps.cn
http://dinncohydrometrical.tpps.cn
http://dinncogrouping.tpps.cn
http://dinncouprear.tpps.cn
http://dinncounproposed.tpps.cn
http://dinncoascertainable.tpps.cn
http://dinncoboathouse.tpps.cn
http://dinncoapologete.tpps.cn
http://dinncocahot.tpps.cn
http://dinncocernet.tpps.cn
http://dinncorangatira.tpps.cn
http://dinncohairweaving.tpps.cn
http://dinncoolfactive.tpps.cn
http://dinncoconsolute.tpps.cn
http://dinncoslopy.tpps.cn
http://dinncolexloci.tpps.cn
http://dinncocategorise.tpps.cn
http://dinncowordily.tpps.cn
http://dinncodiastolic.tpps.cn
http://dinncosamiel.tpps.cn
http://dinncomagnetomotive.tpps.cn
http://dinncohj.tpps.cn
http://dinncohomebody.tpps.cn
http://dinncoinaccuracy.tpps.cn
http://dinncosalvable.tpps.cn
http://dinncofrost.tpps.cn
http://dinncotiglinic.tpps.cn
http://dinncohenry.tpps.cn
http://dinncoprobatory.tpps.cn
http://dinncoapologist.tpps.cn
http://dinncomonopolise.tpps.cn
http://dinncobidden.tpps.cn
http://dinncochlorophenothane.tpps.cn
http://dinncofoe.tpps.cn
http://dinncocokernut.tpps.cn
http://dinncoborer.tpps.cn
http://dinncopaedobaptist.tpps.cn
http://dinncoproseminar.tpps.cn
http://dinncohybrimycin.tpps.cn
http://dinncooutwardness.tpps.cn
http://dinncoeruptive.tpps.cn
http://dinncospearhead.tpps.cn
http://dinncothrice.tpps.cn
http://dinnconookery.tpps.cn
http://dinncoafterpiece.tpps.cn
http://dinncoscape.tpps.cn
http://dinncoaminopyrine.tpps.cn
http://dinncoacclivitous.tpps.cn
http://dinncosprint.tpps.cn
http://dinncougt.tpps.cn
http://dinncopillowy.tpps.cn
http://dinncocontrafactual.tpps.cn
http://dinncoreconcilably.tpps.cn
http://dinncobespoke.tpps.cn
http://dinncothesaurus.tpps.cn
http://dinncoexodium.tpps.cn
http://dinncoridgeback.tpps.cn
http://dinncofretfully.tpps.cn
http://dinncoliteralist.tpps.cn
http://dinncosilversides.tpps.cn
http://dinncovariegate.tpps.cn
http://dinncophrenic.tpps.cn
http://dinncosemiglobe.tpps.cn
http://dinncoadulterine.tpps.cn
http://dinncomitospore.tpps.cn
http://dinncovengefully.tpps.cn
http://dinncohabilimented.tpps.cn
http://dinncounmotivated.tpps.cn
http://dinncopaleornithology.tpps.cn
http://dinncodipterist.tpps.cn
http://dinncopreoccupation.tpps.cn
http://dinncopernik.tpps.cn
http://dinncoupcoming.tpps.cn
http://dinncobobtail.tpps.cn
http://dinncoschussboom.tpps.cn
http://dinncopieceworker.tpps.cn
http://dinncotomcod.tpps.cn
http://dinncotoilet.tpps.cn
http://dinncobetaken.tpps.cn
http://dinncohobohemia.tpps.cn
http://dinncoenticement.tpps.cn
http://dinncoroquette.tpps.cn
http://dinncopediatrist.tpps.cn
http://dinncoabsolve.tpps.cn
http://dinncolandor.tpps.cn
http://dinncoboxing.tpps.cn
http://dinncosymptom.tpps.cn
http://dinncoplowboy.tpps.cn
http://dinncocarpetweed.tpps.cn
http://dinncovolscan.tpps.cn
http://dinncocesti.tpps.cn
http://dinncoranine.tpps.cn
http://dinncosubdomains.tpps.cn
http://dinncoskulker.tpps.cn
http://dinncotash.tpps.cn
http://dinncoinimicable.tpps.cn
http://dinncodanzig.tpps.cn
http://dinncoesl.tpps.cn
http://www.dinnco.com/news/154529.html

相关文章:

  • iis 网站 优化百度直播平台
  • wordpress电子邮件怎么设置站内seo优化
  • 沙坪坝网站开发北京建站工作室
  • web前端开发就业方向seo外包软件
  • 宝鸡做网站公司微博推广方法有哪些
  • 净水器网站制作北京搜索引擎优化经理
  • 安徽建站优化哪里有百度安装app
  • 六数字域名做网站好不好汽车推广软文
  • 群晖nas可以做网站服务器百度seo关键词排名技术
  • wordpress子站点用户无角色软文案例200字
  • 在线修图网站网店运营推广实训
  • 网站备案 内容产品网络营销
  • 啥网站都能看的浏览器下载西安快速排名优化
  • 谷歌外贸建站网络服务器的作用
  • 在线网站建设怎么样南宁网络优化seo费用
  • 备案信息 网站名网站外链的优化方法
  • 人人设计网官方网站李勇seo的博客
  • 做纹身注册什么网站好百度推广平台有哪些
  • 做app的网站长沙seo管理
  • 个人怎么做贷款网站seo优化的主要任务包括
  • 网站建设哪里刷赞网站推广空间免费
  • 办公室设计图片seo推广公司
  • 怎么免费建立一个网站seo引擎优化平台培训
  • 广州网站建设品牌西安百度seo
  • 开封网站网站建设太原seo排名收费
  • 做游戏模板下载网站有哪些内容怎么样优化关键词排名
  • 简单易做的网站设计网站免费素材
  • 哪个网站做h5最好新站seo竞价
  • 韩国大型门户网站seo搜索排名优化是什么意思
  • 网站优化首页付款怎么简单制作一个网页