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

cnjp1d6j  于 2024-01-09  发布在  Spring
关注(0)|答案(1)|浏览(328)

我有以下问题。
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文件中。
  1. spring.jpa.hibernate.ddl-auto=update
  2. spring.jackson.serialization.fail-on-empty-beans=false
  3. spring.datasource.url=jdbc:postgresql://localhost:5432/demo
  4. spring.datasource.username=demo
  5. spring.datasource.password=demo

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

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


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

  1. ...
  2. Initializing Spring DispatcherServlet 'dispatcherServlet'
  3. Initializing Servlet 'dispatcherServlet'
  4. 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“
  1. spring.graphql.path= /graphql
  2. spring.graphiql.enabled= true
  3. spring.graphiql.path= /graphiql

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

  1. type Query{
  2. people: [Person]
  3. }


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

  1. type Person{
  2. id: ID!
  3. name: String
  4. surname: String
  5. }


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

  1. public class Person {
  2. private String id;
  3. private String name;
  4. private String surname;
  5. public Person() {
  6. }
  7. public Person(String id, String name, String surname) {
  8. this();
  9. setId(id);
  10. setName(surname);
  11. setSurname(surname);
  12. }
  13. public String getId() {
  14. return id;
  15. }
  16. public void setId(String id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public String getSurname() {
  26. return surname;
  27. }
  28. public void setSurname(String surname) {
  29. this.surname = surname;
  30. }
  31. }


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

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


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

展开查看全部

相关问题