Metadata-Version: 1.0
Name: repoze.bfg.restrequest
Version: 1.0.1
Summary: a REST aware Request for implementing RESTful applications with repoze.bfg
Home-page: UNKNOWN
Author: Christian Scholz
Author-email: cs@comlounge.net
License: Repoze (BSD-like) license, http://repoze.org/license.html
Description: Introduction
        ============
        
        ``repoze.bfg.restrequest`` implements 4 additional Request types for use with
        RESTful applications.
        
        Imagine you want to create separate views for one resource (identified by an URL) and different HTTP methods. In a default repoze.bfg project you can e.g. write::
        
        
          from repoze.bfg.restrequest import IGETRequest, IPOSTRequest
          from webob import Response
          
          def my_view_get(context, request):
              return Response("GET\n")
        
          def my_view_post(context, request):
              return Response("POST "+request.body+"\n")
              
        This defines one method ``my_view_get`` in case a ``GET`` request is performed on this resource and ``my_view_post`` in case a ``POST`` request is performed. You can do similar things with ``PUT`` or ``DELETE``.
        
        In order to enable these views you need to wire them in ``configure.zcml`` like this::
        
          <!-- include to activate the event handler for marking REST requests -->
          <include package="repoze.bfg.restrequest" />
          
          <bfg:view for=".models.IMyModel"
                request_type="repoze.bfg.restrequest.interfaces.IGETRequest"
                view=".views.my_view_get"
                />
        
          <bfg:view for=".models.IMyModel"
                request_type="repoze.bfg.restrequest.interfaces.IPOSTRequest"
                view=".views.my_view_post"
                />
        
        You can do the same using ``repoze.bfg.convention`` in which case your views would look like this::
        
          from repoze.bfg.restrequest import IGETRequest, IPOSTRequest
          from webob import Response
        
          @bfg_view(request_type=IGETRequest, for_=models.IMyModel)
          def my_view_get(context, request):
              return Response("GET\n")
        
          @bfg_view(request_type=IPOSTRequest, for_=models.IMyModel)
          def my_view_post(context, request):
              return Response("POST "+request.body+"\n")
        
        Make sure you nevertheless include ``repoze.bfg.restrequest`` in your ``configure.zcml``.
        
        
        Testing your application
        ------------------------
        
        A simple test for the above would be to start your application and use ``curl`` to see what the result is for different methods::
        
            $ curl http://127.0.0.1:6543/
            GET
            
            $ curl http://127.0.0.1:6543/ -d "posttest"
            POST posttest
            
        
            
            
        
        
        
        
        
        Changelog
        =========
        
        1.0 - initial release (19 Oct 2008)
        ------------------------------------
        
        * Initial release
        
        1.0.1 - package bugfixing
        -------------------------
        
        * moved HISTORY.txt to main directory so that setup.py finds and packages it.
        
Keywords: rest restful repoze bfg web development framework request wsgi
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Internet :: WWW/HTTP
