【问题标题】:How to use Postman with Graphene?如何将 Postman 与石墨烯一起使用?
【发布时间】:2017-11-26 09:54:39
【问题描述】:

我正在探索使用 GraphQL-Django,而不是构建大量 REST API 端点。为此,我已成功安装并运行“食谱”示例应用程序,它是 Graphene Django 包的一部分:https://github.com/graphql-python/graphene-django

为了更好地了解 GraphQL 技术的工作原理,我尝试使用 Postman 调用 Graphene 服务器。但是我收到了一个 CSRF 错误,并尝试了几种方法来解决它,例如: Django returns 403 error on POST request with Fetch

但到目前为止,我还没有运气。是否有将 Postman 与 Graphene 结合使用的权威指南?

罗伯特

【问题讨论】:

  • 我在stackoverflow.com/questions/44185188/… 有一个答案,其中包含有关如何使用带有突变的邮递员的一些步骤。不过,关于 CSRF 豁免的答案仍然是相关的。
  • 其实我看你已经去过了……

标签: csrf graphene-python


【解决方案1】:

您可能希望使用 graphiql 而不是 postman。但是,如果您遇到 CSRF 问题(并且希望 url 免于 CSRF ......请仔细考虑),您可以将视图包装在 csrf 豁免中。在你的urls.py

from django.views.decorators.csrf import csrf_exempt

url(r'^graphql', csrf_exempt(GraphQLView.as_view(graphiql=True, schema=schema))),

【讨论】:

  • 为了完整起见,如果您确实希望保留 CSRF,您需要安装邮递员拦截器 chrome 扩展,并且您可以在登录后从那里获取 CSRF 值。在后续请求中,您添加X-CSRF-Token 标头。
【解决方案2】:

您可以使用insomnia 代替邮递员。 graphql 很棒。

但正如@styryx 回答的那样,您应该使用 csrf_exempt:

from django.urls import path
from django.views.decorators.csrf import csrf_exempt

from graphene_django.views import GraphQLView

urlpatterns = [
    path("graphql", csrf_exempt(GraphQLView.as_view(graphiql=True))),
]

在我这个tutorial的一个包里,是一个使用失眠客户端的例子

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 2020-07-27
    • 2019-09-03
    • 2019-12-20
    • 2017-05-11
    • 2022-01-24
    • 2012-08-15
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多