If you wonder how to get or update page resource, you have to read this article.
It’s trivial if you have basic knowledge about HTTP protocol. I’d like to get you little involved to this subject.
So GET and POST are most useful methods in HTTP protocol.
What is HTTP?
Hypertext transfer protocol – allow us to communicate between client and server side. In Open Event project we use web browser as client and for now we use Heroku for server side.
Difference between GET and POST methods
GET – it allows to get data from specified resources
POST – it allows to submit new data to specified resources for example by html form.
GET samples:
For example we use it to get details about event
curl http://open-event-dev.herokuapp.com/api/v2/events/95
Response from server:
Of course you can use this for another needs, If you are a poker player I suppose that you’d like to know how many percentage you have on hand.
curl http://www.propokertools.com/simulations/show?g=he&s=generic&b&d&h1=AA&h2=KK&h3&h4&h5&h6&_
POST samples:
curl -X POST https://example.com/resource.cgi
You can often find this action in a contact page or in a login page.
How does request look in python?
We use Requests library to communication between client and server side. It’s very readable for developers. You can find great documentation and a lot of code samples on their website. It’s very important to see how it works.
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200
I know that samples are very important, but take a look how Requests library fulfils our requirements in 100%. We have decided to use it because we would like to communicate between android app generator and orga server application. We have needed to send request with params(email, app_name, and api of event url) by post method to android generator resource. It executes the process of sending an email – a package of android application to a provided email address.
data = { "email": login.current_user.email, "app_name": self.app_name, "endpoint": request.url_root + "api/v2/events/" + str(self.event.id) } r = requests.post(self.app_link, json=data)
Good overview. 🙂