当前位置: 首页 > 知识库问答 >
问题:

grpahiql未使用/graphql的应用程序上下文路径

子车凯泽
2023-03-14

我开发了一个使用 graphql 框架和 spqr 的应用程序,下面给出了依赖项。我的 spring 启动应用程序有一个上下文路径,比如 server.servlet-path=/asdfg

    <dependency>
        <groupId>io.leangen.graphql</groupId>
        <artifactId>spqr</artifactId>
        <version>0.9.7</version>
    </dependency>
    <dependency>
        <groupId>com.graphql-java</groupId>
        <artifactId>graphql-spring-boot-starter</artifactId>
        <version>4.2.0<</version>
    </dependency>
    <dependency>
        <groupId>com.graphql-java</groupId>
        <artifactId>graphql-java-tools</artifactId>
        <version>5.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.graphql-java</groupId>
        <artifactId>graphiql-spring-boot-starter</artifactId>
        <version>4.2.0<</version>
    </dependency>

该应用程序是一个Java / Spring Boot应用程序,其中我的endpoint是一个person query——如下所示

@Component
public class PersonQuery {
    @GraphQLQuery(name = "getPersons")
    public List<Person> getFirstNPersons(@GraphQLArgument(name = "count") int count){
        List<Person> result = new ArrayList<>();
        ...
        return result.stream().limit(count).collect(Collectors.toList());
    }
}

现在,在应用程序启动时,我加载personQuery,然后html" target="_blank">构建Schema。(我使用spqr,没有带有类型定义的.grapqls文件,但它们是按上面的方式注释的)带有@RestController类。

@RestController
public class GraphQLController {
    private static final Logger LOGGER = LoggerFactory.getLogger(GraphQLController.class);
    private final GraphQL graphQL;
    @Autowired
    public GraphQLController(PersonQuery personQuery) {
        // Schema generated from query classes
        GraphQLSchema schema = new GraphQLSchemaGenerator().withResolverBuilders(
                // Resolve by annotations
                new AnnotatedResolverBuilder(),
                // Resolve public methods inside root package
                new PublicResolverBuilder("com.xyz.asd.services"))
                // Query Resolvers
                .withOperationsFromSingleton(personQuery)
                .withValueMapperFactory(new JacksonValueMapperFactory()).generate();
        graphQL = GraphQL.newGraphQL(schema).build();
    }

    @PostMapping(value = "/graphql", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ResponseBody
    public Map<String, Object> indexFromAnnotated(@RequestBody Map<String, String> request, HttpServletRequest raw) {
        ExecutionResult executionResult = graphQL.execute(ExecutionInput.newExecutionInput().query(request.get("query"))
                .operationName(request.get("operationName")).context(raw).build());
        return executionResult.toSpecification();
    }

上面的代码足以调出 http://localhost:8080/asdfg/graphiql 其中“asdfg”是我的应用程序上下文路径。但是在 graphIQL UI 中,我看不到文档下的架构,因为它通常显示。我发现的原因是,尽管 graphIQL UI 使用 /graphql 进行 POST 调用,但它并没有在路径上添加上下文。这是 POST http://localhost:8080/graphql 而不是 POST http://localhost:8080/asdfg/graphql。

如果我从spring应用程序中删除上下文路径,那么该应用程序运行良好。有没有方法可以在POST中包含上下文路径http://localhost:8080/graphql呼叫

共有1个答案

詹甫
2023-03-14

也许你应该更改你的*.文件?

mapping: /graphql --> mapping: /graphql

发件人:

graphql:
  servlet:
    mapping: /graphql

致:

graphql:
      servlet:
        mapping: /asdfg/graphql
 类似资料:
  • 我正在尝试找到一种方法来显式指定部署到Glassfish的Web应用程序的上下文路径3.1.2.2但到目前为止我还没有运气。有人能对此提供指导吗?背景如下: 我有一个Web应用程序,它由两个单独的Netbean(7.0)项目组成。第一个是Web服务,称为FOWS。第二个是使用FOWS网络服务的面向用户的Web应用程序。它被称为FooApp。 我最近将glassfish升级到3.1.2.2,希望解决

  • 问题内容: 当我尝试运行weblogic服务器12c时,它抛出此错误并且无法启动。 发生此错误后,服务器此时挂起 并且在此行之后无法启动,请帮助解决该错误。 问题答案: 停止weblogic服务器 从weblogic的’autodeploy’文件夹中删除所有war文件。 然后再次启动weblogic服务器 之后,在浏览器中输入URL“ http:// localhost:7001 / consol

  • 我已经通过安装插件准备了我的第一个vaadin应用程序,并创建了vaadin项目。构建成功并部署到wildFly后,尝试使用下面的localhost:port/myapp/和localhost:port//myapp/myuiservlet运行应用程序时也不起作用

  • 我已经使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包生成了一个Spring Boot web应用程序。 使用的技术: Spring启动2.0.0。M6,Java8, Maven 这是我的安全配置 在我的 但当我在http://localhost:1234/iberiaWebUtils,而不是去http://localhost:1234/ibe

  • 我们正在为我们的web应用程序使用spring boot。上下文根在WEB-INF/classes/common.properties中定义,如下所示。 Spring boot版本=1.5.2 Tomcat版本=8.0.53

  • 我是Spring MVC的新手。尝试使用安全登录构建项目,但无法在tomcat中启动. war。 失败-无法启动上下文路径/员工处的应用程序 我检查了libraris的复制品,如us log4j和slf4j 请帮我理解原因,提前谢谢。 pom。xml TOMCATlocalhost日志显示: 此类用于控制对Mysql的查询 这是我的申请表ontext.xml