mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-11-04 09:57:41 +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