Spring Data Jpa 如何使用Sping Boot 和PostgreSQL正确设置GraphQL?

cnjp1d6j  于 5个月前  发布在  Spring
关注(0)|答案(1)|浏览(72)

我有以下问题。
1.尝试使用altair graphql client.http://localhost:8080/graphql发送请求时发生introspection request failed : 404错误

  1. http://localhost/graphiqlnot accessible.
    我是Sping Boot 中GraphQL的新手。我正在使用JDK 17和IntelliJ社区版。
    我想用Postgresql做一个GraphQL + Sping Boot 应用。使用Spring Initializr,我创建了一个项目,并添加了以下dependencies
    我还将以下内容添加到application.properties文件中。
spring.jpa.hibernate.ddl-auto=update
spring.jackson.serialization.fail-on-empty-beans=false
spring.datasource.url=jdbc:postgresql://localhost:5432/demo
spring.datasource.username=demo
spring.datasource.password=demo

字符串
当我启动这个应用程序时,我得到以下输出:

...
Tomcat started on port(s): 8080 (http) with context path ''
Started JavaSpringGraphqlApplication in 4.203 seconds (process running for 4.607)


当我在altair中粘贴http://localhost:8080/graphql时,控制台显示以下行

...
Initializing Spring DispatcherServlet 'dispatcherServlet'
Initializing Servlet 'dispatcherServlet'
Completed initialization in 2 ms


我使用过Nestjs + GraphQL,它工作得很好,但使用Sping Boot 我不明白我做错了什么。有人能帮助我设置这个点,我可以
1.在Altair中设置localhost:8080/graphql
1.访问graphql或graphql playground。

dw1jzc5e

dw1jzc5e1#

好的,让我来帮你安装:

  • 转到https://start.spring.io并选择
  • Maven
  • Java
  • 最新稳定的Sping Boot 版本(当前为3.1.3)
  • 添加项目元数据
  • packaging:War(稍后,当你运行所有东西时,你可以改为jar)
  • java :17人
  • 单击添加权限
  • 搜索“Spring for GraphQL”并添加它
  • (可选)搜索“Sping Boot DevTools”,添加它
  • 单击Generate -> download并解压缩该文件。
  • 打开您最喜欢的IDE并将该文件夹作为现有的Maven项目导入到您的工作区中。
  • 尝试运行Sping Boot 应用程序,看看是否一切正常,在我的情况下,我必须运行DemoApplication(带@SpringBootApplication注解)
  • 输出:在10.229秒内启动DemoApplication(进程运行时间为12.347)
  • 添加以下行到您的“application.properties“
spring.graphql.path= /graphql  
    spring.graphiql.enabled= true  
    spring.graphiql.path= /graphiql

字符串
1.在你的“application.properties“所在的同一个文件夹中,你会发现一个名为“graphql”的文件夹。让我们创建一个名为“query.graphqls”的文件,并添加以下行:

type Query{  
      people: [Person]  
    }


1.让我们创建一个文件夹和“graphql”文件夹,名为“person”或(无论什么)在该文件夹下创建一个文件,名为“personType.graphqls”。我的文件看起来像这样:

type Person{  
      id: ID!  
      name: String  
      surname: String  
    }


1.现在让我们创建一个名为Person的类,我将把我所有的类放在同一个包中:

public class Person {
      private String id;
      private String name;
      private String surname;
      
      public Person() {  
      
      }  
      public Person(String id, String name, String surname) {  
        this();  
        setId(id);  
        setName(surname);  
        setSurname(surname);  
      }
      public String getId() {  
        return id;  
      }  
      public void setId(String id) {  
        this.id = id;  
      }  
      public String getName() {  
        return name;  
      }  
      public void setName(String name) {  
        this.name = name;  
      }  
      public String getSurname() {  
        return surname;  
      }  
      public void setSurname(String surname) {  
        this.surname = surname;  
      }  
    }


1.现在让我们创建一个控制器,它处理请求,在我的例子中,我将像这样修改我的应用程序入口类:

@SpringBootApplication
    @Controller
    public class DemoApplication {
    
    public static void main(String[] args) {
       SpringApplication.run(DemoApplication.class, args);
    }
    
    @QueryMapping
    public List<Person> people(){//make sure that this function signature and name is same with the one in query.graphqls
        
      return Arrays.asList(
                new Person("M.A.", "Muhammad","Ali"),
                new Person("M.T.", "Mike","Tython"),
                new Person("F.M.", "Floyd","Mayweather")
                );
        
      }

    }


1.测试您的端点:http://localhost:8080/graphql(使用Postman或Curl)http://localhost:8080/graphql(使用浏览器)
我希望这能帮助你开始!

相关问题