mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 18:07:44 +03:00 
			
		
		
		
	Add sanic example to the docs
This commit is contained in:
		
							parent
							
								
									9918c28866
								
							
						
					
					
						commit
						ba32075e35
					
				| 
						 | 
				
			
			@ -6,7 +6,7 @@ Django example
 | 
			
		|||
   :description: This example demonstrates a usage of the Django and Dependency Injector.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This example shows how to use ``Dependency Injector`` with ``Django``.
 | 
			
		||||
This example shows how to use ``Dependency Injector`` with `Django <https://www.djangoproject.com/>`_.
 | 
			
		||||
 | 
			
		||||
The example application helps to search for repositories on the Github.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,5 +14,6 @@ Explore the examples to see the ``Dependency Injector`` in action.
 | 
			
		|||
    application-multiple-containers
 | 
			
		||||
    decoupled-packages
 | 
			
		||||
    django
 | 
			
		||||
    sanic
 | 
			
		||||
 | 
			
		||||
.. disqus::
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										78
									
								
								docs/examples/sanic.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								docs/examples/sanic.rst
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,78 @@
 | 
			
		|||
Sanic example
 | 
			
		||||
==============
 | 
			
		||||
 | 
			
		||||
.. meta::
 | 
			
		||||
   :keywords: Python,Dependency Injection,Sanic,Example
 | 
			
		||||
   :description: This example demonstrates a usage of the Sanic and Dependency Injector.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This example shows how to use ``Dependency Injector`` with `Sanic <https://sanic.readthedocs.io/en/latest/>`_.
 | 
			
		||||
 | 
			
		||||
The example application is a REST API that searches for funny GIFs on the `Giphy <https://giphy.com/>`_.
 | 
			
		||||
 | 
			
		||||
The source code is available on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/sanic>`_.
 | 
			
		||||
 | 
			
		||||
Application structure
 | 
			
		||||
---------------------
 | 
			
		||||
 | 
			
		||||
Application has next structure:
 | 
			
		||||
 | 
			
		||||
.. code-block:: bash
 | 
			
		||||
 | 
			
		||||
   ./
 | 
			
		||||
   ├── giphynavigator/
 | 
			
		||||
   │   ├── __init__.py
 | 
			
		||||
   │   ├── __main__.py
 | 
			
		||||
   │   ├── application.py
 | 
			
		||||
   │   ├── containers.py
 | 
			
		||||
   │   ├── giphy.py
 | 
			
		||||
   │   ├── handlers.py
 | 
			
		||||
   │   ├── services.py
 | 
			
		||||
   │   └── tests.py
 | 
			
		||||
   ├── config.yml
 | 
			
		||||
   └── requirements.txt
 | 
			
		||||
 | 
			
		||||
Container
 | 
			
		||||
---------
 | 
			
		||||
 | 
			
		||||
Declarative container is defined in ``giphynavigator/containers.py``:
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/containers.py
 | 
			
		||||
   :language: python
 | 
			
		||||
 | 
			
		||||
Handlers
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
Handler has dependencies on search service and some config options. The dependencies are injected
 | 
			
		||||
using :ref:`wiring` feature.
 | 
			
		||||
 | 
			
		||||
Listing of ``giphynavigator/handlers.py``:
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/handlers.py
 | 
			
		||||
   :language: python
 | 
			
		||||
 | 
			
		||||
Application factory
 | 
			
		||||
-------------------
 | 
			
		||||
Application factory creates container, wires it with the ``handlers`` module, creates
 | 
			
		||||
``Sanic`` app instance and setup routes.
 | 
			
		||||
 | 
			
		||||
Listing of ``giphynavigator/application.py``:
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/application.py
 | 
			
		||||
   :language: python
 | 
			
		||||
 | 
			
		||||
Tests
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
Tests use :ref:`provider-overriding` feature to replace search service with a mock ``web/giphynavigator.py``:
 | 
			
		||||
 | 
			
		||||
.. literalinclude:: ../../examples/miniapps/sanic/giphynavigator/tests.py
 | 
			
		||||
   :language: python
 | 
			
		||||
   :emphasize-lines: 27,54,68
 | 
			
		||||
 | 
			
		||||
Sources
 | 
			
		||||
-------
 | 
			
		||||
 | 
			
		||||
Explore the sources on the `Github <https://github.com/ets-labs/python-dependency-injector/tree/master/examples/miniapps/sanic>`_.
 | 
			
		||||
 | 
			
		||||
.. disqus::
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user