Quarkus GraphQL:如何修改默认端点?
修改Quarkus中SmallRye GraphQL的端点路径
嘿,我之前在K8s环境部署Quarkus GraphQL应用时也碰到过这个需求,刚好可以给你几个靠谱的方案:
方法一:通过配置文件自定义端点
你用的是smallrye-graphql-servlet依赖,直接在application.properties(或者application.yaml)里添加一行配置就能修改默认的GraphQL端点路径:
# 替换<service-name>为你的实际服务名称 smallrye.graphql.servlet.mapping=/<service-name>/graphql/*
如果偏好YAML格式,也可以这么写:
smallrye: graphql: servlet: mapping: "/<service-name>/graphql/*"
这个配置会把GraphQL的所有请求(包括查询、突变以及GraphiQL界面如果开启的话)都映射到你指定的路径下。
方法二:配合K8s Ingress完成路径转发
修改完应用配置后,别忘了同步更新K8s Ingress的规则,确保外部请求能正确路由到新的端点。举个Ingress配置示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: your-service-ingress annotations: # 根据你的Ingress控制器添加必要注解,比如NGINX的重写规则 nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: rules: - host: your-domain.example.com http: paths: - path: /<service-name>(/|$)(.*) pathType: ImplementationSpecific backend: service: name: your-quarkus-service port: number: 8080
这里的重写注解是为了让Ingress把/your-service/graphql这类请求转发到应用的/your-service/graphql路径上,如果你不需要重写逻辑,也可以直接把Ingress的path设为/<service-name>/graphql。
验证配置是否生效
启动应用后,你可以通过访问http://<your-service-ip>:8080/<service-name>/graphql来测试端点是否正常工作。如果开启了GraphiQL(默认是开启的),也可以通过这个路径打开GraphiQL界面进行调试。
需要注意的是,你使用的smallrye-graphql-servlet 1.0.1版本已经支持这个配置项,所以不需要担心版本兼容问题~
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

