mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-02 20:54:16 +03:00
Updated documentation referencing middleware
This commit is contained in:
parent
b9723356fe
commit
10e5424e31
|
@ -17,6 +17,7 @@ ga = "UA-12613282-7"
|
||||||
"/docs/basic-types/",
|
"/docs/basic-types/",
|
||||||
"/docs/enums/",
|
"/docs/enums/",
|
||||||
"/docs/relay/",
|
"/docs/relay/",
|
||||||
|
"/docs/middleware/",
|
||||||
]
|
]
|
||||||
|
|
||||||
[docs.django]
|
[docs.django]
|
||||||
|
|
|
@ -13,14 +13,19 @@ For that, you will need to add the plugin in your graphene schema.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
For use the Django Debug plugin in Graphene, just import `DjangoDebugPlugin` and add it to the `plugins` argument when you initiate the `Schema`.
|
For use the Django Debug plugin in Graphene:
|
||||||
|
* Import `DjangoDebugMiddleware` and add it to the `middleware` argument when you initiate the `Schema`.
|
||||||
|
* Add the `debug` field into the schema root `Query` with the value `graphene.Field(DjangoDebug, name='__debug')`.
|
||||||
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from graphene.contrib.django.debug import DjangoDebugPlugin
|
from graphene.contrib.django.debug import DjangoDebugMiddleware, DjangoDebug
|
||||||
|
|
||||||
|
class Query(graphene.ObjectType):
|
||||||
# ...
|
# ...
|
||||||
schema = graphene.Schema(query=Query, plugins=[DjangoDebugPlugin()])
|
debug = graphene.Field(DjangoDebug, name='__debug')
|
||||||
|
|
||||||
|
schema = graphene.Schema(query=Query, middlewares=[DjangoDebugMiddleware()])
|
||||||
```
|
```
|
||||||
|
|
||||||
This plugin, will add another field in the `Query` named `__debug`.
|
This plugin, will add another field in the `Query` named `__debug`.
|
||||||
|
|
43
docs/pages/docs/middleware.md
Normal file
43
docs/pages/docs/middleware.md
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
---
|
||||||
|
title: Middleware
|
||||||
|
description: Walkthrough Middleware
|
||||||
|
---
|
||||||
|
|
||||||
|
# Middleware
|
||||||
|
|
||||||
|
You can use _middleware_ to affect the evaluation of fields in your schema.
|
||||||
|
|
||||||
|
A middleware is any object that responds to `resolve(*args, next_middleware)`. Inside that method, it should either:
|
||||||
|
|
||||||
|
* Send `resolve` to the next middleware to continue the evaluation; or
|
||||||
|
* Return a value to end the evaluation early.
|
||||||
|
|
||||||
|
Middlewares' `resolve` is invoked with several arguments:
|
||||||
|
|
||||||
|
* `next` represents the execution chain. Call `next` to continue evalution.
|
||||||
|
* `root` is the root value object passed throughout the query
|
||||||
|
* `args` is the hash of arguments passed to the field
|
||||||
|
* `context` is the context object passed throughout the query
|
||||||
|
* `info` is the resolver info
|
||||||
|
|
||||||
|
Add a middleware to a schema by adding to the `middlewares` list.
|
||||||
|
|
||||||
|
|
||||||
|
### Example: Authorization
|
||||||
|
|
||||||
|
This middleware only continues evaluation if the `field_name` is not `'user'`:
|
||||||
|
|
||||||
|
```python
|
||||||
|
class AuthorizationMiddleware(object):
|
||||||
|
|
||||||
|
def resolve(self, next, root, args, context, info):
|
||||||
|
if info.field_name == 'user':
|
||||||
|
return None
|
||||||
|
return next(root, args, context, info)
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, add the middleware to your schema:
|
||||||
|
|
||||||
|
```python
|
||||||
|
schema = Schema(middlewares=[AuthorizationMiddleware])
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user