GraphQL

九鹤 等级 328 0 0

GraphQL

一种api文档查询语言

基本语法

本地运行

git clone https://github.com/apollographql/starwars-server
cd starwars-server
npm install
npm start
执行上面的命令之后打开下面的地址 即可学习
http://localhost:8080/graphql

简单查询

要求返回什么就返回什么

{
  hero{
    friends{
      name
    }
  }
}
{
  "data": {
    "hero": {
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}

带参数进行筛选

{
  human(id:1000){
    name
  }
}

结果

{
  "data": {
    "human": {
      "name": "Luke Skywalker"
    }
  }
}

取别名

防止冲突

{
  A:hero(episode:EMPIRE){
    name
  }
  B:hero(episode:JEDI){
    name
  }
}
{
  "data": {
    "A": {
      "name": "Luke Skywalker"
    },
    "B": {
      "name": "R2-D2"
    }
  }
}

复用查询的片段

{
  A:hero(episode:EMPIRE){
   ... heros
  }
  B:hero(episode:JEDI){
   ... heros 
  }
}

fragment heros on Character {
  name
  appearsIn
  friends{
    name
  }
}

当查询的参数来自于用户输入的时候

query HeroNameAndFriends($episode: Episode){
  A:hero(episode:$episode){
    name
    friends{
      name
    }
  }
}

设置参数的默认值

query HeroNameAndFriends($episode: Episode! = JEDI ){
  A:hero(episode:$episode){
    name
    friends{
      name
    }
  }
}

修改数据

mutation{
  createReview(episode:JEDI,review:{stars:3}){
    episode
    stars
  }
}

用内联片段查询具体类型

query HeroNameAndFriends($ep: Episode){
  hero(episode: $ep){
    name
    ... on Droid{
      primaryFunction
    }
  }
}
{
  search(text:"an"){
    __typename
    ... on Human{
      name
      height
    }
    ... on Starship{
      name
      length
    }
  }
}

编辑js并且运行

js内容

const express = require('express');
const { buildSchema } =require('graphql');
const { graphqlHTTP } = require("express-graphql");

//定义schema 查询和类型
const schema = buildSchema(
    `
    type Query {
        hello: String
    }
`)

//定义查询对应的处理器
const root = {
    hello: () =>{
        return 'hello world';
    }
}

const app =express();

app.use("/graphql",graphqlHTTP({
    schema: schema,
    rootValue: root,
    graphiql: true 
}))

app.listen(3000);

运行命令

npm init -y

npm install experss graphql express-graphql -S

node helloWorld.js

通过端口找到在上面运行的进程 然后结束进程

找到8080端口 第二行最后的数字为process ID 即PID,

netstat -o -n -a | findstr :8080
TCP    0.0.0.0:3000      0.0.0.0:0              LISTENING       3116

拿到pid 直接可以结束进程

taskkill /F /PID 3116
收藏
评论区

相关推荐

Spring Cloud 微服务开发指南
如同 Spring Boot 在 Java Web 开发领域中的统治地位,Spring Cloud 在 Java 微服务应用开发领域中同样处于垄断地位。软件系统从单体升级到微服务架构,随之会出现各种分布式系统所特有的问题,包括服务注册发现、认证授权、限流熔断、调用追踪等。Spring Cloud 提供了各种组件来解决这些问题,本文将通过升级改造一个单体 AP
Spring Boot API 服务开发指南
Spring Boot 大大简化了使用 Spring 框架开发 Web 应用时的配置工作,使用它只需添加相关依赖包,即可通过零配置或少量配置来运行一个 Web 应用。本文将使用 Spring Boot 来开发一个 API 服务,同时支持 REST 和 GraphQL 两种协议。内容包括使用 Querydsl 来替换 JPQL 以便以类型安全的方式动态构建 S
GraphQL
GraphQL一种api文档查询语言 基本语法本地运行javagit clone https://github.com/apollographql/starwarsservercd starwarsservernpm installnpm start执行上面的命令之后打开下面的地址 即可学习http://localhost:8080/grap

热门文章

并发编程的基础概念security 概念RabbitMq 的高级特性

最新文章

security 概念并发编程的基础概念RabbitMq 的高级特性