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

DRF与GraphQL Mesh通过OpenAPI集成报错求助

解决GraphQL Mesh对接DRF OpenAPI报错的问题

1. 修正DRF的OpenAPI Schema生成配置

你的urls.py中drf_schema_view未定义,这会导致Mesh获取的Schema格式不符合标准。统一使用drf-yasg生成合规的OpenAPI 3.0 Schema:

修改project/urls.py:

from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from rest_framework import permissions
from graphene_django.views import GraphQLView

# 生成标准OpenAPI 3.0 Schema
schema_view = get_schema_view(
   openapi.Info(
      title="Project API",
      default_version='v1',
      description="Project OpenAPI Schema",
   ),
   public=True,
   permission_classes=(permissions.AllowAny,),
   patterns=urlpatterns,
)

urlpatterns = [
   path('admin/', admin.site.urls),
   path('category/', include('mobiledeveloper.urls')),

   # 暴露标准Swagger JSON接口
   path('swagger.json', schema_view.without_ui(cache_timeout=0), name='schema-json'),
   path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
   path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
   path('graphql/', csrf_exempt(GraphQLView.as_view(graphiql=True))),
]

2. 调整GraphQL Mesh的OpenAPI Handler配置

更新.meshrc.yml,添加兼容DRF的配置项:

sources:
  - name: DeveloperGround
    handler:
      openapi:
        source: http://localhost:8000/swagger.json
        baseurl: http://localhost:8000
        # 指定解析为OpenAPI 3.0格式
        schemaFormat: openapi3
        # 关闭严格模式,忽略非致命Schema错误
        strict: false
        # 若DRF要求CSRF,添加请求头(不需要可移除)
        operationHeaders:
          X-CSRFToken: '{context.headers["X-CSRFToken"]}'

3. 验证Schema有效性

把http://localhost:8000/swagger.json的内容复制到本地Swagger Editor工具中检查,确保没有语法错误。如果有问题,调整drf-yasg配置(比如排除无效接口、修正字段定义)。

4. 处理DRF的CSRF限制

如果Mesh请求时出现CSRF错误,给DRF的API视图添加csrf_exempt装饰器:

from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator

@method_decorator(csrf_exempt, name='dispatch')
class YourAPIView(APIView):
    # 视图逻辑

5. 更新GraphQL Mesh依赖

你的Mesh版本较旧,更新到最新稳定版可修复已知兼容问题:

npm update @graphql-mesh/cli @graphql-mesh/openapi

完成以上步骤后,重新运行npm run dev即可尝试对接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:48:10