博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GraphQL graphene-django 基本使用文档
阅读量:5965 次
发布时间:2019-06-19

本文共 3233 字,大约阅读时间需要 10 分钟。

graphene-django 基本使用文档

介绍

一种用于 API 的查询语言

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

文档

官网

参考文档

个人项目应用

模块

pip install  graphene-django

使用

INSTALLED_APPS = [        'graphene_django',]GRAPHENE = {    'SCHEMA': 'app.schema.schema'}urls.pyfrom graphene_django.views import GraphQLViewfrom app.schema import schema    path('graphql/', GraphQLView.as_view(graphiql=True, schema=schema)),

app/schema.py

from django.contrib.auth.models import  User  as Usersfrom graphene_django import DjangoObjectTypeimport graphene# 相关文档 https://passwo.gitbook.io/graphql/index/drfclass UserType(DjangoObjectType):    class Meta:        model = Usersclass Query(graphene.ObjectType):    users = graphene.List(UserType)    # List == Field:    # List 返回结果会是遍历所有查询结果    # Field 返回结果只存在单个 (其中可添加参数, ex. pk)    single_user = graphene.Field(UserType, pk=graphene.Int())    # 定义函数名的格式: resolve_字段    # **kwargs 传递参数    # pk: 如果在字段中定义, 则方法参数中必含    def resolve_users(self, info, **kwargs):        return Users.objects.all()    def resolve_single_user(self, info, pk):        return Users.objects.get(id=pk)class TQuery(Query, graphene.ObjectType):    passclass CreateUser(graphene.Mutation):    class Arguments:        username = graphene.String(required=True)    info = graphene.Field(UserType)    ok = graphene.Boolean()    def mutate(self, info, **kwargs):        # print(info.context.user, '==当前用户==')        # kwargs 是传递参数中的变量        # user = info.context.user        user_obj = Users(**kwargs)        try:            user_obj.save()            ok = True        except Exception as e:            print(e)            ok = False        return CreateUser(ok=ok, info=user_obj)class CMutation(object):    create_user = CreateUser.Field()class UpdateUser(graphene.Mutation):    class Arguments:        username = graphene.String()        pk = graphene.Int(required=True)    info = graphene.Field(UserType)    ok = graphene.Boolean()    def mutate(self, info, **kwargs):        pk = kwargs.get('pk')        user_obj = Users.objects.get(id=pk)        if not user_obj:            return UpdateUser(ok=False)        user_obj.__dict__.update(**kwargs)        user_obj.save()        ok = True        return UpdateUser(ok=ok, info=user_obj)class UMutation(object):    update_user = UpdateUser.Field()class DeleteUser(graphene.Mutation):    class Arguments:        pk = graphene.Int()    ok = graphene.Boolean()    def mutate(self, info, **kwargs):        pk = kwargs.get('pk')        user = Users.objects.get(id=pk)        user.delete()        return DeleteUser(ok=True)class DMutation(object):    delete_user = DeleteUser.Field()class Mutations(CMutation, UMutation,DMutation,graphene.ObjectType):    passschema = graphene.Schema(query=TQuery, mutation=Mutations)

请求

请求地址 :

GraphQL 请求参数

query{  users{    id,    username,    email  }}query{  singleUser(pk: 1){    username,    email  }}mutation createUser { createUser (username: "test1") {     info {         id,     },     ok }}mutation updateUser { updateUser (pk:2,username: "test2") {     info {         id,     },     ok }}mutation deleteUser { deleteUser (pk:2) {     ok }}

转载于:https://blog.51cto.com/hequan/2376728

你可能感兴趣的文章
我的友情链接
查看>>
MVC中的三个模块
查看>>
Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
查看>>
oracle 常用命令大汇总
查看>>
2012年春运火车票电话和网上订票技巧、攻略
查看>>
根据request获取请求路径
查看>>
mysql 并行复制
查看>>
傲不可长,欲不可纵,乐不可极,志不可满——提高个人修养
查看>>
linux系统增加swap容量的方法
查看>>
后台调用gps
查看>>
HTML5标签的语义认知和理解(1)
查看>>
MySQL日志功能详解(2)
查看>>
HP LaserJet 305X 和 339X 系列一体机如何设置手动或自动接收传真?
查看>>
linux之权限之隐藏权限
查看>>
系统启动时,spring配置文件解析失败,报”cvc-elt.1: 找不到元素 'beans' 的声明“异常...
查看>>
XDCTF成长记录
查看>>
registered the JDBC driver [com.mysql.jdbc.Driver]
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
python---LineReceiver实现记录服务器
查看>>