Python requests: URL base in Session

前端 未结 5 896
夕颜
夕颜 2020-12-28 14:44

When using a Session, it seems you need to provide the full URL each time, e.g.

session = requests.Session()
session.get(\'http://myserver/getstuff\')
sessio         


        
5条回答
  •  南方客
    南方客 (楼主)
    2020-12-28 15:07

    This feature has been asked on the forums a few times 1, 2, 3. The preferred approach as documented here, is subclassing, as follows:

    from requests import Session
    from urlparse import urljoin
    
    class LiveServerSession(Session):
        def __init__(self, prefix_url=None, *args, **kwargs):
            super(LiveServerSession, self).__init__(*args, **kwargs)
            self.prefix_url = prefix_url
    
        def request(self, method, url, *args, **kwargs):
            url = urljoin(self.prefix_url, url)
            return super(LiveServerSession, self).request(method, url, *args, **kwargs)
    

    You would use this simply as follows:

    baseUrl = 'http://api.twitter.com'
    with LiveServerSession(baseUrl) as s:
        resp = s.get('/1/statuses/home_timeline.json')
    

提交回复
热议问题