$30 off During Our Annual Pro Sale. View Details »

requests, czyli HTTP dla ludzi

requests, czyli HTTP dla ludzi

requests: HTTP for humans
My talk from PyWaw #2 (in Polish).

Zbigniew Siciarz

July 11, 2011
Tweet

More Decks by Zbigniew Siciarz

Other Decks in Programming

Transcript

  1. httplib urllib(2) requests na ratunek
    requests, czyli HTTP dla ludzi
    Zbigniew Siciarz
    PyWaw 11 lipca 2011
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  2. httplib urllib(2) requests na ratunek
    Plan prezentacji
    1 httplib
    2 urllib(2)
    3 requests na ratunek
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  3. httplib urllib(2) requests na ratunek
    httplib
    import httplib
    conn = httplib.HTTPConnection("httpbin.org")
    conn.request("GET", "/status /418")
    response = conn.getresponse ()
    print response.status , response.reason
    print response.read()
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  4. httplib urllib(2) requests na ratunek
    httplib
    zbyszek@wicherek :~/ Dokumenty/requests$ python code/httplib1.py
    418 I’M A TEAPOT
    -=[ teapot ]=-
    _...._
    .’ _ _ ‘.
    | ."‘ ^ ‘". _,
    \_;‘"---" ‘|//
    | ;/
    \_ _/
    ‘"""‘
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  5. httplib urllib(2) requests na ratunek
    urllib/urllib2
    obie biblioteki w stdlib
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  6. httplib urllib(2) requests na ratunek
    urllib/urllib2
    obie biblioteki w stdlib
    ró»na funkcjonalno±¢
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  7. httplib urllib(2) requests na ratunek
    urllib/urllib2
    obie biblioteki w stdlib
    ró»na funkcjonalno±¢
    urllib: kodowanie parametrów, pobieranie wprost do pliku
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  8. httplib urllib(2) requests na ratunek
    urllib/urllib2
    obie biblioteki w stdlib
    ró»na funkcjonalno±¢
    urllib: kodowanie parametrów, pobieranie wprost do pliku
    urllib2: obsªuga otwieraczy
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  9. httplib urllib(2) requests na ratunek
    urllib2 - Basic Auth
    import urllib2
    url = ’http :// httpbin.org/basic -auth/user/pass’
    user = ’user’
    password = ’pass’
    req = urllib2.Request(url)
    pwd_manager = urllib2.HTTPPasswordMgrWithDefaultRealm ()
    pwd_manager.add_password(None , url , user , password)
    auth_manager = urllib2.HTTPBasicAuthHandler(pwd_manager)
    opener = urllib2.build_opener(auth_manager)
    urllib2.install_opener(opener)
    response = urllib2.urlopen(req)
    print response.getcode ()
    print response.headers.getheader(’content -type’)
    print response.read()
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  10. httplib urllib(2) requests na ratunek
    urllib2 - Basic Auth
    import urllib2
    url = ’http :// httpbin.org/basic -auth/user/pass’
    user = ’user’
    password = ’pass’
    req = urllib2.Request(url)
    pwd_manager = urllib2.HTTPPasswordMgrWithDefaultRealm ()
    pwd_manager.add_password(None , url , user , password)
    auth_manager = urllib2.HTTPBasicAuthHandler(pwd_manager)
    opener = urllib2.build_opener(auth_manager)
    urllib2.install_opener(opener)
    response = urllib2.urlopen(req)
    print response.getcode ()
    print response.headers.getheader(’content -type’)
    print response.read()
    O RLY?
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  11. httplib urllib(2) requests na ratunek
    requests
    http://python-requests.org/
    Requests: Python HTTP Module (That Doesn't Suck)
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  12. httplib urllib(2) requests na ratunek
    requests
    http://python-requests.org/
    Requests: Python HTTP Module (That Doesn't Suck)
    Requests: The Simple (e.g. usable) HTTP Module
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  13. httplib urllib(2) requests na ratunek
    requests
    http://python-requests.org/
    Requests: Python HTTP Module (That Doesn't Suck)
    Requests: The Simple (e.g. usable) HTTP Module
    Requests: HTTP for Humans
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  14. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  15. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  16. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    requests.put
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  17. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    requests.put
    requests.delete
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  18. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    requests.put
    requests.delete
    requests.patch
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  19. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    requests.put
    requests.delete
    requests.patch
    requests.options
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  20. httplib urllib(2) requests na ratunek
    requests - API
    requests.get(...)
    requests.post
    requests.put
    requests.delete
    requests.patch
    requests.options
    requests.head
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  21. httplib urllib(2) requests na ratunek
    requests - proste »¡danie GET
    import requests
    response = requests.get(’http :// httpbin.org/status /418’)
    print response.status_code
    print response.content
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  22. httplib urllib(2) requests na ratunek
    requests - Basic Auth
    import requests
    url = ’http :// httpbin.org/basic -auth/user/pass’
    response = requests.get(url , auth=(’user’, ’pass’))
    print response.status_code
    print response.headers[’content -type’]
    print response.content
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  23. httplib urllib(2) requests na ratunek
    requests - Basic Auth
    zbyszek@wicherek :~/ Dokumenty/requests$ python code/requests_2.py
    2
    application/json
    {
    "authenticated": true ,
    "user": "user"
    }
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  24. httplib urllib(2) requests na ratunek
    requests - POST i upload pliku
    import requests
    data = dict(username=’’)
    with open(__file__) as f:
    response = requests.post(’http :// httpbin.org/post’,
    data=data , files ={’filename ’: f})
    print response.status_code
    print response.content
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  25. httplib urllib(2) requests na ratunek
    requests - POST i upload pliku
    zbyszek@wicherek :~/ Dokumenty/requests$ python code/requests_3.py
    2
    {
    "origin": "::ffff :184.73.223.212",
    "files": {
    "filename": "import requests\n\n"
    },
    "form": null ,
    "url": "http :// httpbin.org/post",
    "args": {},
    "headers": {
    "Content -Length": "555",

    "Content -Type": "multipart/form -data; boundary =3298
    fc5c93854f96b712fa47 8e4cdef"
    },
    "data": "username"
    }
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  26. httplib urllib(2) requests na ratunek
    Alternatywy
    PyCURL wrapper na libcurl
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  27. httplib urllib(2) requests na ratunek
    Alternatywy
    PyCURL wrapper na libcurl
    Mechanize klient to "przegl¡darka"
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide

  28. httplib urllib(2) requests na ratunek
    The End
    Pytania?
    http://siciarz.net
    @zsiciarz
    @zsiciarz
    requests, czyli HTTP dla ludzi

    View Slide