2017-08-07 32 views

回答

2

关于到CORS支持 - 使用aiohttp-cors。 自述文件包含有关安装和使用的所有必需说明。

+0

是的,我用它以及aiohttp-swagger :) – Natim

0

你可能想看看中间件:

http://aiohttp.readthedocs.io/en/stable/web.html#example

下面是一个例子:

from aiohttp import web 


def setup_middlewares(app): 
    error_middleware = error_pages({404: handle_404, 
            500: handle_500}) 
    app.middlewares.append(error_middleware) 


def error_pages(overrides): 
    async def middleware(app, handler): 
     async def middleware_handler(request): 
      try: 
       response = await handler(request) 
       override = overrides.get(response.status) 
       if override is None: 
        return response 
       else: 
        return await override(request, response) 
      except web.HTTPException as ex: 
       override = overrides.get(ex.status) 
       if override is None: 
        return await handle_any(request, ex) 
       else: 
        return await override(request, ex) 
      except Exception as ex: 
       return await handle_500(request, error=ex) 
     return middleware_handler 
    return middleware 


async def handle_any(request, response): 
    return web.json_response({ 
     "status": response.status, 
     "message": response.reason 
    }, status=response.status) 


async def handle_404(request, response): 
    return web.json_response({ 
     "status": 404, 
     "message": "Page '{}' not found".format(request.path) 
    }, status=404) 


async def handle_500(request, response=None, error=None): 
    return web.json_response({ 
      "status": 503, 
      "message": "Service currently unavailable" 
     }, status=503)