KEMBAR78
Learn REST API with Python | PPT
Larry cai <larry.caiyu@gmail.com>
Agenda








What is REST API ?
Exercise 1: use curl to play with REST API
Exercise 2: use requests module to GET headers
Exercise 3: write in python script
Exercise 4: HTTPS & Basic Authentication towards Github
Exercise 5: POST your script into gist
Summary & Homework & Reference

2

Learn REST API with Python in 90 minutes
REST API



REST = REpresentation State Transfer
REST vs. SOAP
XML vs. JSON



REST/JSON is first choice to use ! (twitter, jenkins…)




See slides http://www.slideshare.net/rmaclean/json-and-rest for detail
Or
"Beautiful REST + JSON APIs" by Les Hazlewood
http://www.youtube.com/watch?v=hdSrT4yjS1g

3

Learn REST API with Python in 90 minutes
Environment


Python 2.7.x In Windows with Git Bash




4

http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi
http://git-scm.com/downloads
Add into Path

Learn REST API with Python in 90 minutes
Exercise 1: using curl


Try to get the data in browser and command using cURL
http://httpbin.org/get

$ export http_proxy=
$ export https_proxy=
$ curl –v http://httpbin.org/get

5

Learn REST API with Python in 90 minutes
Exercise: use urllib2 module



SKIP this, it wastes time

6

Learn REST API with Python in 90 minutes
Requests Module




Python’s standard urllib2 module provides most of the
HTTP capabilities you need, but the API is
thoroughly broken.
Python HTTP: When in doubt, or when not in doubt, use
Requests. Beautiful, simple, Pythonic.

http://www.python-requests.org

7

Learn REST API with Python in 90 minutes
Exercise 2: use requests module


Install requests module (could use pip)
http://docs.python-requests.org/en/latest/user/install/#install



Use it interactive mode
$ python
>>> import requests
>>> r = requests.get("http://httpbin.org/get")

8

Learn REST API with Python in 90 minutes
JSON format and usage in python


JSON (JavaScript Object Notation) is a lightweight datainterchange format. It is easy for humans to read and
write. It is easy for machines to parse and generate.



>>> print r.json()



Python JSON module
>>>import json
>>>data[“firstName”]
“John”

http://www.slideshare.net/rmaclean/json-and-rest
9

Learn REST API with Python in 90 minutes
Exercise 3: write in python script


Download exercise code restapi.py from github
NOTE: this is prepared script




https://gist.github.com/larrycai/7823499

Implement tasks in method exer3()


print result text, status_code for http://httpbin.org/get
print r.status_code






Print “origin” and “User-Agent” (JSON) (use r.json())
Enable debug by calling enable_debug()

Execute command to verify
$ ./restapi.py –e 3

10

Learn REST API with Python in 90 minutes
Exercise 4: HTTPS & Authentication


HTTPS (SSL certification)
$ curl https://api.github.com/users/larrycai
=> requests.get(…,verify=False)



Authentication (Basic, Digest, OAuth), use curl command
$ curl –v –u larrycai https://api.github.com/user
> Authorization: Basic bGFycnljYWk6TTFkZUBMMWZl
=> HTTP Basic Auth => requests.get(…,auth = HTTPBasicAuth(user, passwd))



Tasks:



Use curl to try your own account
Use script get your account’s “created_at”

http://developer.github.com/v3/

11

Learn REST API with Python in 90 minutes
Exercise 5: POST data


Upload with POST method
curl -X POST -d
'{"public":true,"files":
{"test.txt":{"content":"String
file contents"}}}'
https://api.github.com/gists



>>> import json
>>> json.dumps(['foo', {'bar':
('baz', 1.0, 2)}])
'["foo", {"bar": ["baz",1.0, 2]}]'
>>> print json.dumps(""foobar")
""foobar“



Task:


Upload your current restapi.py
to YOUR gist
http://developer.github.com/v3/gists/#create-a-gist

12

Learn REST API with Python in 90 minutes
Summary



Requests module is preferred to use in python
Try browser/cURL before script to access API
REST/JSON is good marriage



Coding and learn from others




13

Learn REST API with Python in 90 minutes
Exercise 6 : Homework


Implement for all gist API



Use oauth to access github in python script



Get all jenkins jobs in python script



Submit your final result into gist, then give me email, you
may get gift ;-)

14

Learn REST API with Python in 90 minutes
Reference




Understand REST API: http://www.restapitutorial.com/
Requests python module: http://www.python-requests.org
Github developer API v3




http://developer.github.com/v3/

Jenkins API


15

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

Jenkins Scriptler in 90 minutes

Learn REST API with Python

  • 1.
  • 2.
    Agenda        What is RESTAPI ? Exercise 1: use curl to play with REST API Exercise 2: use requests module to GET headers Exercise 3: write in python script Exercise 4: HTTPS & Basic Authentication towards Github Exercise 5: POST your script into gist Summary & Homework & Reference 2 Learn REST API with Python in 90 minutes
  • 3.
    REST API  REST =REpresentation State Transfer REST vs. SOAP XML vs. JSON  REST/JSON is first choice to use ! (twitter, jenkins…)   See slides http://www.slideshare.net/rmaclean/json-and-rest for detail Or "Beautiful REST + JSON APIs" by Les Hazlewood http://www.youtube.com/watch?v=hdSrT4yjS1g 3 Learn REST API with Python in 90 minutes
  • 4.
    Environment  Python 2.7.x InWindows with Git Bash    4 http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi http://git-scm.com/downloads Add into Path Learn REST API with Python in 90 minutes
  • 5.
    Exercise 1: usingcurl  Try to get the data in browser and command using cURL http://httpbin.org/get $ export http_proxy= $ export https_proxy= $ curl –v http://httpbin.org/get 5 Learn REST API with Python in 90 minutes
  • 6.
    Exercise: use urllib2module  SKIP this, it wastes time 6 Learn REST API with Python in 90 minutes
  • 7.
    Requests Module   Python’s standard urllib2 moduleprovides most of the HTTP capabilities you need, but the API is thoroughly broken. Python HTTP: When in doubt, or when not in doubt, use Requests. Beautiful, simple, Pythonic. http://www.python-requests.org 7 Learn REST API with Python in 90 minutes
  • 8.
    Exercise 2: userequests module  Install requests module (could use pip) http://docs.python-requests.org/en/latest/user/install/#install  Use it interactive mode $ python >>> import requests >>> r = requests.get("http://httpbin.org/get") 8 Learn REST API with Python in 90 minutes
  • 9.
    JSON format andusage in python  JSON (JavaScript Object Notation) is a lightweight datainterchange format. It is easy for humans to read and write. It is easy for machines to parse and generate.  >>> print r.json()  Python JSON module >>>import json >>>data[“firstName”] “John” http://www.slideshare.net/rmaclean/json-and-rest 9 Learn REST API with Python in 90 minutes
  • 10.
    Exercise 3: writein python script  Download exercise code restapi.py from github NOTE: this is prepared script   https://gist.github.com/larrycai/7823499 Implement tasks in method exer3()  print result text, status_code for http://httpbin.org/get print r.status_code    Print “origin” and “User-Agent” (JSON) (use r.json()) Enable debug by calling enable_debug() Execute command to verify $ ./restapi.py –e 3 10 Learn REST API with Python in 90 minutes
  • 11.
    Exercise 4: HTTPS& Authentication  HTTPS (SSL certification) $ curl https://api.github.com/users/larrycai => requests.get(…,verify=False)  Authentication (Basic, Digest, OAuth), use curl command $ curl –v –u larrycai https://api.github.com/user > Authorization: Basic bGFycnljYWk6TTFkZUBMMWZl => HTTP Basic Auth => requests.get(…,auth = HTTPBasicAuth(user, passwd))  Tasks:   Use curl to try your own account Use script get your account’s “created_at” http://developer.github.com/v3/ 11 Learn REST API with Python in 90 minutes
  • 12.
    Exercise 5: POSTdata  Upload with POST method curl -X POST -d '{"public":true,"files": {"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists  >>> import json >>> json.dumps(['foo', {'bar': ('baz', 1.0, 2)}]) '["foo", {"bar": ["baz",1.0, 2]}]' >>> print json.dumps(""foobar") ""foobar“  Task:  Upload your current restapi.py to YOUR gist http://developer.github.com/v3/gists/#create-a-gist 12 Learn REST API with Python in 90 minutes
  • 13.
    Summary  Requests module ispreferred to use in python Try browser/cURL before script to access API REST/JSON is good marriage  Coding and learn from others   13 Learn REST API with Python in 90 minutes
  • 14.
    Exercise 6 :Homework  Implement for all gist API  Use oauth to access github in python script  Get all jenkins jobs in python script  Submit your final result into gist, then give me email, you may get gift ;-) 14 Learn REST API with Python in 90 minutes
  • 15.
    Reference    Understand REST API:http://www.restapitutorial.com/ Requests python module: http://www.python-requests.org Github developer API v3   http://developer.github.com/v3/ Jenkins API  15 https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API Jenkins Scriptler in 90 minutes