graphql 比较方便的进行api 的查询,操作,swagger 是一个方便的open api 描述标准,当前我们有比较多的
restapi 但是转换为graphql 是有成本的,还好swagger-to-graphql 这个npm 包帮助我们简化了操作

基本项目

具体项目参考 https://github.com/rongfengliang/swagger-to-graphql-docker

  • 项目结构
├── Dockerfile
├── README.md
├── api
│ └── s.json
├── app.js
├── docker-compose.yaml
├── lib
│ ├── index.js
│ ├── swagger.js
│ ├── typeMap.js
│ └── types.js
├── package.json
└── yarn.lock
  • 代码说明
package.json  依赖添加
{
"name": "swagger-graphql",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"babel-polyfill": "^6.26.0",
"express": "^4.16.3",
"express-graphql": "^0.6.12",
"graphql": "^0.13.2",
"swagger-to-graphql": "^1.4.0"
},
"scripts": {
"start": "node app"
}
}
app.js restapi 转 graphql
require('babel-polyfill');
const express = require('express');
const app = express();
const graphqlHTTP = require('express-graphql');
const graphQLSchema = require('./lib'); // 类型映射 const proxyUrl = 'https://petstore.swagger.io/v2';
const pathToSwaggerSchema = `${__dirname}/api/s.json`; // swagger api 描述
const customHeaders = {
Authorization: 'Basic YWRkOmJhc2ljQXV0aA=='
}; graphQLSchema(pathToSwaggerSchema, proxyUrl, customHeaders).then(schema => {
app.use('/graphql', graphqlHTTP(() => {
return {
schema,
graphiql: true
};
})); app.listen(3009, '0.0.0.0', () => {
console.info('http://localhost:3009/graphql');
});
}).catch(e => {
console.log(e);
}); Dockerfile docker 镜像构建 FROM dalongrong/node-yarn
WORKDIR /app
COPY . /app
RUN yarn install
EXPOSE 3009
ENTRYPOINT [ "yarn","start" ] docker-compose.yaml docker-compose 运行文件
version: "3"
services:
g:
build: ./
image: dalongrong/swagger-graphql
ports:
- "3009:3009"

运行

  • docker 镜像构建
docker-compose build
  • docker-compose run
docker-compose up -d
  • 访问
    请求测试

    接口文档

说明

类似的解决方案有 schema stitch graphql-binding

参考资料

https://github.com/yarax/swagger-to-graphql
https://github.com/graphql-binding/graphql-binding
https://www.prisma.io/blog/reusing-and-composing-graphql-apis-with-graphql-bindings-80a4aa37cff5/
https://github.com/rongfengliang/swagger-to-graphql-docker

 
 
 
 

swagger api 转graphql npm 包试用的更多相关文章

  1. harbor rest api 转graphql api

    原理 实际上就是使用graphql 中的binding,首先基于swagger api 进行schema 生成,后边就是 使用binding 进行graphql 请求api 转换为rest api 请 ...

  2. 使用 js 和 Beacon API 实现一个简易版的前端埋点监控 npm 包

    使用 js 和 Beacon API 实现一个简易版的前端埋点监控 npm 包 前端监控,埋点,数据收集,性能监控 Beacon API https://caniuse.com/beacon 优点,请 ...

  3. streamsets rest api 转换 graphql

    原理很简单,就是使用swagger api 生成schema 然后代理请求处理api 调用 参考项目 https://github.com/rongfengliang/streamsets-graph ...

  4. graphql elasticsearch 集成试用

    graphql 是很方便的api 查询语言,elasticsearch 可以方便的进行全文检索的应用开发 有一个方便的npm 包graphql-compose-elasticsearch 可以进行es ...

  5. 添加swagger api文档到node服务

    swagger,一款api测试工具,详细介绍参考官网:http://swagger.io/ ,这里主要记录下怎么将swagger api应用到我们的node服务中: 1.任意新建node api项目, ...

  6. 【vue系列之三】从一个vue-pdf-shower,说说vue组件和npm包

    前言 从去年年初开始,自己便下决心要写一个vue系列的博客,但时至今日,才写系列的第三篇博客,想来甚是惭愧. 但是慢归慢,每一篇都要保证质量,以及要写出自己的心路历程,防止自己工作中填的坑再让读者走一 ...

  7. Swagger API接口管理

    介绍         Swagger API框架,用于管理项目中API接口,属当前最流行的API接口管理工具. Swagger功能强大,UI界面漂亮,支持在线测试等!         Swagger包 ...

  8. 编写一个供浏览器端使用的NPM包

    此文已由作者吴维伟授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在编写程序时,总会有一些代码是我们不愿意一遍又一遍重复地去写的,比如一些UI或交互相似组件,或是一些相似的流 ...

  9. npm包的更新说明,你还敢不看吗

    npm包的更新说明,你还敢不看吗 前言 平时工作少不了依赖一些第三方的npm包,站在各位大牛的肩膀上来更好的写bug,此外还可以学习各位大佬们的各种设计思路和优雅实现.不过npm包虽好,但使用之前也要 ...

随机推荐

  1. 26QTimer定时器的使用

    前面介绍过定时器事件(QTimerEvent),有个弊端,就是每启动一个定时器都要对应的ID.本次介绍在设计器中使用Qtimer. 首先在设计器中添加一个LCD Number,和两个按钮. 头文件 # ...

  2. Codeforces Round #523 (Div. 2) Solution

    A. Coins Water. #include <bits/stdc++.h> using namespace std; int n, s; int main() { while (sc ...

  3. Android性能优化典范 - 第1季

    https://www.zhihu.com/question/30138734 http://hukai.me/android-performance-patterns/ 2015新年伊始,Googl ...

  4. 20145307陈俊达《网络对抗》Exp4 恶意代码分析

    20145307陈俊达<网络对抗>Exp4 恶意代码分析 基础问题回答 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么.请设计下你想监控的操作有哪 ...

  5. ELF文件分析

    (1)文件ELF.c (2)编译: gcc -c ELF_1.c -o ELF_1.o (3)显示文件类型: (4)查看大小: (5)转换为16进制 (6)显示各段信息 (7)分析

  6. 20145325张梓靖 《Java程序设计》第5周学习总结

    20145325张梓靖 <Java程序设计>第5周学习总结 教材学习内容总结 try catch Java中所有错误都会被打包为对象.如果某个方法声明会抛出Throwable或子类实例,只 ...

  7. Installing VirtualBox DKMS in Kali 2.0

    Kali linux is one of the mainly used operating system by the Ethical hackers and information securit ...

  8. godaddy之ssl申请

    第一步 执行下面命令生成csr和key文件 openssl req -new -newkey rsa: -nodes -keyout trips.com.key -out trips.com.csr ...

  9. POJ 1170 Shopping Offers(完全背包+哈希)

    http://poj.org/problem?id=1170 题意:有n种花的数量和价格,以及m种套餐买法(套餐会便宜些),问最少要花多少钱. 思路:题目是完全背包,但这道题目不好处理的是套餐的状态, ...

  10. 缓存cache(5.2新:redis): gem faker (6600✨) 命令行工具curl(系统内置,可在git上看到文档)

    ⚠️本章节记录缓存的一些方法的用法案例,配合这篇博客一起阅读:https://i.cnblogs.com/EditPosts.aspx?postid=8776632  前置种子 https://git ...