搭建GraphQL服务

js版


GraphQL在 NodeJS 服务端中使用最多

安装graphql-yoga:

npm install graphql-yoga


新建index.js:

const {GraphQLServer} = require("graphql-yoga")


const server = new GraphQLServer({
    typeDefs`
    type Query {
        hello(name:String):String!
        } 
    `
,

    resolvers: {
        Query: {
            hello(parent, {name}, ctx) => {
                return `${name},你好!`;
            }
        }
    }
})


server.start({
    port4600
}, ({port}) => {
    console.log(`服务器已启动,请访问: http://localhost:${port}`);
})


alt

node index.js 运行

点击链接 进入playground:

query{
  hello(name:"dashen")
}
alt

参考自 5分钟快速搭建一个Graphql服务器[1]




Golang版


入门教程[2]

Go常用的GraphQL服务端库[3]

alt

graphql-go/graphql[4]项目的demo:

(文档点此[5])

package main

import (
 "encoding/json"
 "fmt"
 "log"

 "github.com/graphql-go/graphql"
)

func main() {
 // Schema
 fields := graphql.Fields{
  "hello": &graphql.Field{
   Type: graphql.String,
   Resolve: func(p graphql.ResolveParams) (interface{}, error) {
    return "world"nil
   },
  },
 }
 rootQuery := graphql.ObjectConfig{Name: "RootQuery", Fields: fields}
 schemaConfig := graphql.SchemaConfig{Query: graphql.NewObject(rootQuery)}
 schema, err := graphql.NewSchema(schemaConfig)
 if err != nil {
  log.Fatalf("failed to create new schema, error: %v", err)
 }

 // Query
 query := `
  {
   hello
  }
 `

 params := graphql.Params{Schema: schema, RequestString: query}
 r := graphql.Do(params)
 if len(r.Errors) > 0 {
  log.Fatalf("failed to execute graphql operation, errors: %+v", r.Errors)
 }
 rJSON, _ := json.Marshal(r)
 fmt.Printf("%s \n", rJSON) // {"data":{"hello":"world"}}
}

执行输出

{"data":{"hello":"world"}}


基于此项目的实践,参考

Graphql Go 基于Golang实践[6]

代码[7]

参考资料

[1]

5分钟快速搭建一个Graphql服务器: https://www.bilibili.com/video/BV1db41137BT

[2]

入门教程: https://graphql.cn/learn/

[3]

Go常用的GraphQL服务端库: https://graphql.cn/code/#go

[4]

graphql-go/graphql: https://github.com/graphql-go/graphql

[5]

文档点此: https://pkg.go.dev/github.com/graphql-go/graphql

[6]

Graphql Go 基于Golang实践: https://www.jianshu.com/p/16719baa1713

[7]

代码: https://github.com/gopherteam/graphql-server-go

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/138172.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux CentOS7 tree命令

tree就是树,是文件或文件名输出到控制台的一种显示形式。 tree命令作用:以树状图列出目录的内容,包括文件、子目录及子目录中的文件和目录等。 我们使用ll命令显示只能显示一个层级的普通文件和目录的名称。而使用tree则可以树的形式将指定…

打架识别相关开源数据集资源汇总(附下载链接)

更多数据集分类资源汇总:https://www.cvmart.net/dataSets 监控摄像头下的打架检测 数据集下载链接:http://suo.nz/39IbxQ 该数据集是从包含打架实例的 Youtube 视频中收集的。此外,还包括一些来自常规监控摄像机视频的非打架序列。 总共有…

Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)

在linux系统上进行多gpu卡的深度学习任务 确保已安装最新的 TensorFlow GPU 版本。 import tensorflow as tf print("Num GPUs Available: ", len(tf.config.list_physical_devices(GPU)))1、确保你已经正确安装了tensorflow和相关的GPU驱动,这里可以通…

Mac电脑安装Zulu Open JDK 8 使用 spring-kafka 消费不到Kafka Partition中的消息

一、现象描述 使用Mac电脑本地启动spring-kakfa消费不到Kafka的消息,监控消费组的消息偏移量发现存在Lag的消息,但是本地客户端就是拉取不到,通过部署到公司k8s容器上消息却能正常消费! 本地启动的服务消费组监控 公司k8s容器服…

9.2.3.1 【MySQL】XDES Entry链表

当段中数据较少的时候,首先会查看表空间中是否有状态为 FREE_FRAG 的区,也就是找还有空闲空间的碎片区,如果找到了,那么从该区中取一些零碎的页把数据插进去;否则到表空间下申请一个状态为 FREE 的区,也就是…

关于时空数据的培训 GAN:实用指南(第 02/3 部分)

一、说明 在本系列关于训练 GAN 实用指南的第 1 部分中,我们讨论了 a) 鉴别器 (D) 和生成器 (G) 训练之间的不平衡如何导致模式崩溃和由于梯度消失而导致静音学习,以及 b) GAN 对超参…

CTF —— 网络安全大赛(这不比王者好玩吗?)

前言 随着大数据、人工智能的发展,人们步入了新的时代,逐渐走上科技的巅峰。 \ ⚔科技是一把双刃剑,网络安全不容忽视,人们的隐私在大数据面前暴露无遗,账户被盗、资金损失、网络诈骗、隐私泄露,种种迹象…

Conditional DETR(ICCV 21)

Conditional DETR(ICCV 21) Conditional DETR for Fast Training Convergence 加速detr收敛(50 epoch收敛) DETR收敛慢的原因 DETR训练收敛速度慢,需要500 epochs DETR的Cross Attention高度依赖content embedding…

软件项目开发的流程及关键点

软件项目开发的流程及关键点 graph LR A[需求分析] --> B[系统设计] B --> C[编码开发] C --> D[测试验证] D --> E[部署上线] E --> F[运维支持]在项目开发的流程中,首先是进行需求分析,明确项目的目标和功能要求。接下来是系统设计&am…

数据结构与算法——13.队列的拓展

这篇文章主要讲一下双端队列,优先队列,阻塞队列等队列的拓展内容。 目录 1.队列拓展概述 2.双端队列的链表实现 3.双端队列的数组实现 4.优先队列无序数组实现 5.阻塞队列 6.总结 1.队列拓展概述 首先来看一张图,来大致了解一下他们的…

解决SpringMVC在JSP页面取不到ModelAndView中数据

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 ModelAndView携带数据跳转到指定JSP页面后在该页面通过EL表达式取不到原本存放在ModelAndView中的数据。 问题原因 在IDEA中创建Maven工程时web.xml中默认的约束…

QT用户登录注册,数据库实现

登录窗口头文件 #ifndef LOGINUI_H #define LOGINUI_H#include <QWidget> #include <QLineEdit> #include <QPushButton> #include <QLabel> #include <QMessageBox>#include <QSqlDatabase> //数据库管理类 #include <QSqlQuery> …

滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

Ajax学习笔记

目录 Ajax介绍Ajax概述同步异步 原生Ajax演示AxiosAxios的基本使用Axios快速入门Axios请求方法别名Axios案例 Ajax介绍 Ajax概述 我们前端页面中的数据应该来自于后台&#xff0c;那么我们的后台和前端是互不影响的2个程序&#xff0c;那么我们前端应该如何从后台获取数据呢&…

Ansible 自动化运维工具部署主从数据库+读写分离

文章目录 Ansible 自动化运维工具部署主从数据库读写分离一、主从复制和读写分离介绍二、准备工作&#xff08;1&#xff09;节点规划&#xff08;2&#xff09;修改主机名&#xff08;3&#xff09;免密&#xff08;4&#xff09;配置IP映射&#xff08;5&#xff09;安装ansi…

【二叉树】二叉树展开为链表-力扣 114 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

springcloud3 分布式事务解决方案seata之XA模式4

一 seata的模式 1.1 seata的几种模式比较 Seata基于上述架构提供了四种不同的分布式事务解决方案&#xff1a; XA模式&#xff1a;强一致性分阶段事务模式&#xff0c;牺牲了一定的可用性&#xff0c;无业务侵入 TCC模式&#xff1a;最终一致的分阶段事务模式&#xff0c;有…

Qt QWebEngineView 忽略https验证

背景 Qt版本&#xff1a;5.9.6 Qt通过WebEngineView加载网页时&#xff0c;如果遇到https且证书未认证&#xff0c;会导致页面加载失败。一般情况下内部web服务器的http是证书都是自签的&#xff0c;无法通过验证&#xff0c;但也有其他的解决方案。 重新编译 修改Qt的源码…

点云滤波--一种点云异常值检测和稳健法线估计方法

文章目录 1写在前面的话2outlier检测算法2.1获取最大集合&#xff08;Getting the maximum consistent set&#xff09;2.2异常值检测2.3估计法线和曲率 3实验结果3.1模拟数据3.2真实数据3.3 自己实测结果&#xff1a; 1写在前面的话 论文针对激光点云提出了一种基于平面拟合的…

虚拟DOM与diff算法

虚拟DOM与diff算法 snabbdom虚拟DOMdiff算法 snabbdom 是什么&#xff1a;snabbdom是著名的虚拟DOM库&#xff0c;是diff算法的鼻祖&#xff0c;Vue源码借鉴了snabbdom 虚拟DOM 是什么&#xff1a;本质上是存在内存里的 JavaScript 对象 作用&#xff1a;用来描述真实DOM的层…