Cara Menggunakan Web API Restful dengan Python
Indonesian (Bahasa Indonesia) translation by âš¡ Rova Rindrata (you can also view the original English article)
Tutorial ini akan memperkenalkan Anda kepada API web dan mengajari Anda cara menggunakan perpustakaan Python untuk mengambil dan memperbarui informasi di API web. Anda juga akan belajar bagaimana berinteraksi dengan Twitter API sebagai contoh yang bekerja.
Pengantar API Web
API (Application Programming Interface) adalah kerangka kerja untuk membangun layanan HTTP yang dapat dikonsumsi oleh berbagai klien. API Web menggunakan protokol HTTP untuk menangani permintaan antara klien dan server web.
Beberapa API yang paling umum yang memungkinkan pengembang untuk mengintegrasikan dan menggunakan infrastruktur mereka termasuk:
- API Google
- API Twitter
- API Amazon
- API Facebook
Salah satu alasan paling penting untuk menggunakan API dibandingkan dengan sumber data statis lainnya adalah karena ini waktu nyata. Sebagai contoh, API Twitter yang akan kita gunakan akan mengambil data waktu-nyata dari jejaring sosial.
Keuntungan lainnya adalah bahwa data terus berubah, jadi jika Anda mengunduhnya secara berkala, itu akan memakan waktu.
Menggunakan Perpustakaan Requests
Untuk menggunakan API, Anda harus menginstal perpustakaan requests Python. Requests adalah perpustakaan HTTP di Python yang memungkinkan Anda mengirim permintaan HTTP dengan Python.
Menginstal Requests
Di terminal Anda, ketik:
1 |
pip install requests
|
Untuk memeriksa apakah penginstalan telah berhasil, berikan perintah berikut di interpreter Python Anda atau terminal:
1 |
import requests |
Jika tidak ada kesalahan, instalasinya berhasil.
Bagaimana Mendapatkan Informasi dari Web API
Metode GET digunakan untuk mendapatkan informasi dari server web. Mari kita lihat cara membuat permintaan GET untuk mendapatkan timeline umum GitHub.
Kita menggunakan variabel req untuk menyimpan respons dari permintaan kita.
1 |
import requests |
2 |
req = requests.get('https://github.com/timeline.json') |
Sekarang setelah kita membuat permintaan ke timeline GitHub, mari kita mendapatkan encoding dan konten yang terkandung dalam respons.
1 |
import requests |
2 |
req = requests.get('https://github.com/timeline.json') |
3 |
req.text |
4 |
u'{"message":"Hello there, wayfaring stranger. If you\u2019re reading this then you probably didn\u2019t see our blog post a couple of years back announcing that this API would go away: https://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.","documentation_url":"https://developer.github.com/v3/activity/events/#list-public-events"}
|
1 |
import requests |
2 |
req = requests.get('https://github.com/timeline.json')
|
3 |
req.encoding |
4 |
'utf-8' |
Requests memiliki dekode JSON bawaan yang dapat Anda gunakan untuk mendapatkan respons permintaan dalam format JSON.
1 |
import requests |
2 |
import json |
3 |
req = requests.get('https://github.com/timeline.json') |
4 |
req.json()
|
5 |
{u'documentation_url': u'https://developer.github.com/v3/activity/events/#list-public-events', u'message': u'Hello there, wayfaring stranger. If you\u2019re reading this then you probably didn\u2019t see our blog post a couple of years back announcing that this API would go away: http://git.io/17AROg Fear not, you should be able to get what you need from the shiny new Events API instead.'} |
Cara Membuat dan Memperbarui Informasi di Web API
Metode POST dan PUT keduanya digunakan untuk membuat dan memperbarui data. Meskipun ada kesamaan, penting untuk dicatat bahwa menggunakan permintaan POST untuk memperbarui data akan menghasilkan dua entri di penyimpanan data jika dua item yang identik dikirimkan.
Membuat data (permintaan POST):
1 |
r = requests.post('http://127.0.0.1/api/v1/add_item', data = {'task':'Shopping'}) |
Memperbarui data (permintaan PUT):
1 |
r = requests.put('http://127.0.0.1/api/v1/add_item', data = {'task':'Shopping at 2'}) |
Bekerja dengan API REST Twitter
Di bagian ini, Anda akan belajar cara mendapatkan kredensial API Twitter, mengotentikasi ke API Twitter, dan berinteraksi dengan API Twitter menggunakan Python.
Anda juga akan dapat mengambil informasi dari akun Twitter publik, seperti tweet, pengikut, dll.
Otentikasi dengan Twitter
Kita perlu mengotentikasi dengan API Twitter sebelum kita dapat berinteraksi dengannya. Untuk melakukan ini, ikuti langkah-langkah berikut:
- Buka halaman Aplikasi Twitter.
- Klik pada Create New App (Anda harus login ke Twitter untuk mengakses halaman ini). Jika Anda tidak memiliki akun Twitter, buat sebuah akun.



3. Buat nama dan deskripsi untuk aplikasi Anda dan placeholder situs web.



4. Cari Tab Keys and Access Tokens dan buat token akses Anda.
.jpg)
.jpg)
.jpg)
5. Anda perlu memperhatikan secret token Access dan Access Token karena Anda akan membutuhkannya untuk proses otentikasi.
6. Anda juga perlu memperhatikan Consumer Key and Consumer Secret.
Ada beberapa perpustakaan yang bisa kita gunakan untuk mengakses API Twitter, tetapi kita akan menggunakan perpustakaan python-twitter dalam tutorial ini.
Menginstal python-twitter
Untuk menginstal python-twitter, gunakan:
1 |
$ pip install python-twitter |
API Twitter diekspos melalui kelas twitter.Api, jadi mari membuat kelas dengan meneruskan token dan kunci secret kita:
1 |
import twitter |
2 |
api = twitter.Api(consumer_key=[consumer key], |
3 |
consumer_secret=[consumer secret], |
4 |
access_token_key=[access token], |
5 |
access_token_secret=[access token secret]) |
Ganti kredensial Anda di atas dan pastikan mereka diapit tanda kutip, yaitu consumer_key='xxxxxxxxxx', ...)
Meminta pada Twitter
Ada banyak metode berinteraksi dengan API Twitter, termasuk:
1 |
>>> api.PostUpdates(status) |
2 |
>>> api.PostDirectMessage(user, text) |
3 |
>>> api.GetUser(user) |
4 |
>>> api.GetReplies() |
5 |
>>> api.GetUserTimeline(user) |
6 |
>>> api.GetHomeTimeline() |
7 |
>>> api.GetStatus(status_id) |
8 |
>>> api.DestroyStatus(status_id) |
9 |
>>> api.GetFriends(user) |
10 |
>>> api.GetFollowers() |
Untuk mendapatkan data dari Twitter, kita akan membuat panggilan API dengan bantuan objek api yang kita buat di atas.
Kita akan melakukan hal berikut:
- Buat variabel
userdan tetapkan sama dengan handle Twitter yang valid (nama pengguna).
Panggil metode
GetUserTimeline()pada objekapidan berikan argumen berikut.
- handle Twitter yang valid
- jumlah tweet yang ingin Anda ambil (
count) - flag untuk mengecualikan retweets (ini dilakukan menggunakan
include_rts = false)
Mari dapatkan tweet terbaru dari timeline Envato Tuts+ Code, tidak termasuk retweet.
1 |
import twitter |
2 |
api = twitter.Api(consumer_key="xxxxxxxxxxxx", consumer_secret="xxxxxxxxxxxxxx", |
3 |
access_token_key="314746354-xxxxx", access_token_secret="xxxxxx") |
4 |
|
5 |
user = "@TutsPlusCode" |
6 |
statuses = api.GetUserTimeline( |
7 |
screen_name=user, count=30, include_rts=False) |
8 |
for s in statuses: |
9 |
print s.text |
Metode GetUserTimeline() akan mengembalikan daftar dari 30 tweet terbaru, jadi kita mengulang melalui daftarnya dan mencetak informasi yang paling penting (konten) dari setiap tweet.
1 |
Here are 6 things that make Yarn the best #JavaScript package manager around. https://t.co/N4vzIJmSJi
|
2 |
Find out more about bar charts with part 3 of this series on creating interactive charts using Plotly.js. https://t.co/lyKMxSsicJ |
3 |
See what's new with Git support in Xcode 9. https://t.co/7gGu0PV1rV
|
4 |
Here's how to create digital signatures with Swift. https://t.co/kCYYjShJkW
|
5 |
In this quick tip, discover how to use Atom as a Git GUI. https://t.co/8rfQyo42xM |
6 |
Take a look at these 12 useful WordPress plugins for page layouts. https://t.co/T57QUjEpu5
|
7 |
Learn more about line charts in part 2 of our series on creating interactive charts using Plotly.js. https://t.co/nx51wOzSkF
|
8 |
Grab some great freebies with our special 10th birthday offer, https://t.co/AcIGTiC2re |
9 |
In this latest in our series on coding a real-time app with NativeScript: Push notifications. https://t.co/qESFVGVF4L
|
10 |
Get started with end-to-end testing in Angular using Protractor. https://t.co/TWhQZe7ihE
|
11 |
Learn how to build a to-do API with Node, Express, and MongoDB. https://t.co/R4DvRYiM90 |
12 |
What is the Android activity lifecyle? https://t.co/VUHsucaC1X |
13 |
Learn all about object-oriented programming with JavaScript. https://t.co/bI7ypANOx3 |
14 |
Have some fun with functions in this latest in our series on Kotlin. https://t.co/r2f2TzA5lM |
15 |
Here's how to make your JavaScript code robust with Flow. https://t.co/rcdjybKL8L
|
16 |
Build your own to-do API with Node and Restify. https://t.co/gQeTSZ6C5k
|
17 |
Here's how to put your view controllers on a diet with MVVM. https://t.co/oJqNungt1O
|
18 |
Learn how to submit your new iOS app to the App Store. https://t.co/JQwsKovcaI |
19 |
This guide is the perfect place to build your skills and start writing plugins in Go. https://t.co/68X5lLSNHp
|
20 |
Take a look at how to test components in Angular using Jasmine. https://t.co/V5OTNZgDkR |
21 |
Learn to build your first #WordPress plugin in this awesome new course. https://t.co/695C6U6D7V
|
22 |
In this latest in our Android architecture components series: LiveData. https://t.co/gleDFbqeAi
|
23 |
Take a deep dive into the Go type system. https://t.co/AUM7ZyanRO
|
24 |
Take a look at serverless logic with realm functions. https://t.co/aYhfeMgAZc |
25 |
Part 4 of React crash course for beginners is out! https://t.co/aG5NEa6yG9
|
26 |
Learn about social login and Firebase in this new addition to the series. https://t.co/oL5z0krQD3
|
27 |
Creating a blogging app using React part 6 is out! Tags https://t.co/OzUaPQEX8E |
28 |
What is GenServer and why should you care? https://t.co/EmQeTBggUK |
29 |
Check out part 3 in React crash course for beginners series. https://t.co/dflLCUqncO |
30 |
Learn about packages and basic functions in this addition to our Kotlin from scratch series. https://t.co/JAo2ckSgZS
|
Untuk mengambil follower, kita menggunakan metode GetFriends().
1 |
import twitter |
2 |
api = twitter.Api(consumer_key="ftFL8G4yzQXUVzbUCdxGwKSjJ", consumer_secret="KxGwBe6GlgSYyC7PioIVuZ5tFAsZs7q1rseEYCOnTDIjulT0mZ", |
3 |
access_token_key="314746354-Ucq36TRDnfGAxpOVtnK1qZxMfRKzFHFhyRqzNpTx", |
4 |
access_token_secret="7wZ1qHS0qycy0aNjoMDpKhcfzuLm6uAbhB2LilxZzST8w") |
5 |
|
6 |
user = "@TutsPlusCode" |
7 |
friends = api.GetFriends(screen_name=user) |
8 |
for friend in friends: |
9 |
print friend.name |
Keluaran
1 |
Derek Herman |
2 |
Cyan Ta'eed
|
3 |
Dropbox
|
4 |
Stoyan Stefanov
|
5 |
The JavaScript Ninja
|
6 |
Dan Wellman
|
7 |
Brenley Dueck
|
8 |
Dave Ward
|
9 |
Packt
|
10 |
Karl Swedberg
|
11 |
Envato Tuts+ Web
|
12 |
Dev_Tips
|
13 |
Vahid Ta'eed
|
14 |
Jarel Remick |
15 |
Envato Dev. Team |
16 |
🖥 Drew Douglass 📈 |
17 |
Cameron Moll |
18 |
SitePoint |
19 |
John Resig |
20 |
Skellie |
21 |
Chris Coyier |
22 |
Envato Tuts+ |
23 |
Envato Tuts+ Design |
24 |
Collis |



