壞公子 2024-09-10 17:47 采纳率: 0%
浏览 4

如何去掉graphql接口名字强绑定

用graphql开发,现在的controller层是使用 如下方式进行:

@Component
public class A implements GraphQLQueryResolver,GraphQlMutationResolver{

}
该类的方法名必须与.graphql文件定义的接口文件名一致,不一致就报错,这是为什么。
改成如下也不能用
@controller
public class A {
@QueryMapping
public A(){}
}
也不行

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-10 17:48
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在GraphQL中,你看到的这种模式其实并不是接口名称和方法的直接强绑定,而是通过定义的操作映射关系来确定具体的实现逻辑。你可能对GraphQL的具体实现有一些误解。以下是一些可能的解释和建议:

    首先,关于你提到的 @Component 注解与 @Controller 的区别:这两者是在不同的上下文中使用的,并且在Spring框架中有不同的含义。当你在一个类中同时使用这两个注解时,可能并没有实现你期望的功能。具体来说:

    • @Component 是一个通用的Spring组件注解,用于自动检测并注册Bean。而GraphQL的查询解析器通常使用 @Component 注解注册。你需要保证这些方法有特定的逻辑去解析特定的查询操作(字段)。而你在这些方法中使用的内容并不是直接使用操作名来调用的,而是通过查询请求的参数来决定。这意味着方法名与 .graphql 文件定义的接口文件名没有直接关系。你可以在 @Component 注解的类中随意命名你的方法。你的实现可能并不是这样的原因导致了问题。你可以检查你的代码是否有其他地方定义了操作与方法的映射关系。例如,你可能需要定义类似 @GraphQLQuery 这样的注解来指定你的方法对应哪个查询操作。这取决于你使用的GraphQL库的实现方式。下面是一个示例(注意这个实现方式依赖于具体的库实现):
    import org.springframework.stereotype.Component;
    import org.springframework.web.bind.annotation.*; // 这里你可能需要引入相关的注解库来支持GraphQL的注解
    import graphql.annotations.*; // 根据你的GraphQL库导入正确的注解库
    
    @Component // 注册为Spring组件
    public class A {
        // 这里没有使用QueryMapping注解,而是使用了GraphQL的注解来指定查询和操作的关系
        @GraphQLQuery(name = "YourQueryName") // 定义查询操作的名称映射到方法上
        public YourResponseType yourQueryMethod() {
            // ... 实现查询逻辑 ...
        }
    }
    ``` 这种方式并不会因为方法名与接口文件名不一致而报错。接口文件名和查询操作名称是两个不同的概念,不应混淆。在 `.graphql` 文件中的定义通常是指定的查询操作的名称和相关的字段信息。至于具体如何实现这些操作(包括解析、处理等),则由你在后端代码中定义并映射。你应该确保你在代码中正确设置了操作与方法的映射关系,而不是仅仅依赖方法名和文件名的一致性来判断它们是否关联正确。如果需要更多的具体细节帮助定位问题,你可以参考你使用的GraphQL库提供的文档或者源代码来帮助你了解其具体的工作方式。
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月10日

悬赏问题

  • ¥15 Windows Script Host 无法找到脚本文件"C:\ProgramData\Player800\Cotrl.vbs”
  • ¥15 matlab自定义损失函数
  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图