You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Krakend API网关访问Django GraphQL端点时出现404错误

通过Krakend API网关访问Django GraphQL端点出现404错误

环境

  • Django: 4.2.6
  • GraphQL(基于graphene-django)
  • Krakend API Gateway
  • Docker容器化环境

问题描述

直接请求Django后端的/graphql端点完全正常,但通过Krakend网关转发请求时,会返回404 Not Found错误。

错误日志

Docker后端服务日志显示:

backend_1   | Not Found: /graphql
backend_1   | [14/Oct/2023 23:32:52] "POST /graphql HTTP/1.1" 404 2961

说明经Krakend路由到后端的请求,无法匹配到/graphql端点。

Django配置

urls.py 端点定义

from django.urls import path, re_path
from graphene_django.views import GraphQLView
from django.views.decorators.csrf import csrf_exempt

urlpatterns = [
    path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True, name='graphql'))),
    # ... 其他路径 ...
]

settings.py 关键配置

ALLOWED_HOSTS = ['backend', 'frontend', 'localhost', ...]
INSTALLED_APPS = ['graphene_django', ...]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
CORS_ORIGIN_WHITELIST = ["http://localhost:3000"]

已尝试的解决方案

  • 确认Django的/graphql端点定义正确,直接访问正常
  • 检查Docker网络配置,服务间可正常通信
  • 核对Krakend路由规则,确认指向Django后端的配置无误
  • 直接请求后端端点验证服务可用性

以上操作均未解决问题。

疑问

  1. Krakend在请求处理或路由逻辑上可能存在哪些问题,导致/graphql端点无法被匹配?
  2. Django是否有特定配置会影响来自Krakend的请求路由,但不影响直接请求?
  3. 有哪些额外的日志或调试手段可以定位问题根源?

内容的提问来源于stack exchange,提问作者MariO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:40:15