【问题标题】:how to get query string parameters from url in aiohttp?如何从aiohttp中的url获取查询字符串参数?
【发布时间】:2018-05-26 05:21:51
【问题描述】:

我尝试使用aiohttp从url获取查询字符串参数,但是这段代码不起作用:

async def call_answer(request):
    print("request", request)
    params = request.rel_url.query
    print("parameters +++++", params["call_id"])
    conn = psycopg2.connect(connect_str)
    cursor = conn.cursor()
    sql = """
          update calls
          set status = %s
          where id = %s;
          """ % (params["status"], params["call_id"])
    cursor.execute(sql)
    conn.commit()

    return web.Response(
        content_type='application/json',
        text=json.dumps({
            'status': 'success'
        }))



if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='WebRTC audio / video / data-channels demo')
    parser.add_argument('--port', type=int, default=8080,
                        help='Port for HTTP server (default: 8080)')
    parser.add_argument('--verbose', '-v', action='count')
    args = parser.parse_args()

    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)

    app = web.Application()
    app.router.add_get('/{call_id}&{status}', call_answer)

我在互联网上搜索,到处都写着你应该使用 request.rel_url.query 从查询字符串中获取所有参数,但是运行代码时出现错误!!!!!!

【问题讨论】:

    标签: python string python-3.x aiohttp request.querystring


    【解决方案1】:

    您不能将查询字符串添加到路由规范中,因为 aiohttp 在进行路由匹配时会丢弃查询字符串。 request.rel_url.query 效果很好,这里有一个例子:

    from aiohttp import web
    
    
    async def call_answer(request):
        params = request.rel_url.query
        return web.Response(text='\n'.join([
            'call_id = ' + params['call_id'],
            'status = ' + params['status'],
        ]))
    
    
    app = web.Application()
    app.router.add_get('/', call_answer)
    web.run_app(app)
    

    测试它:

    $ curl 'localhost:8080/?call_id=100&status=200'
    call_id = 100
    status = 200
    

    【讨论】:

      猜你喜欢
      • 2017-10-07
      • 1970-01-01
      • 2017-07-20
      • 2014-02-14
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多