Tích hợp Python với Firebase's REST API
Bài đăng này đã không được cập nhật trong 3 năm
Tích hợp Python với Firebase's REST API
Mở đầu
Firebase là một service database realtime hoạt động trên hệ thống clould của Google. Một số tính năng chính của Firebase:
- Realtime Database: Database lưu trên firebase là dạng JSON. Việc đồng bộ database tới tất cả phía client đều là realtime. Đây là một tính năng cực kỳ nổi trội của Firebase.
- Firebase Authentication: Bạn có thể dễ dàng tích hợp Firebase với hệ thống xác thực mà bạn sử dụng Google, Facebook, ... hay bạn tự viết cho các ứng dụng Mobile hoặc Web app.
- Firebase Hosting: Tức là ở đây, bạn chỉ cần lo về phía client. Server và database thì đã có Firebase lo. Tất nhiên, bạn phải trả tiền cho Google
Một số lợi ích đạt được khi sử dụng Firebase:
- Rút ngắn thời gian phát triển: Do bạn chỉ cần quan tâm về phía client, server và database là do Firebase xử lý tự động qua các API nên thời gian phát triển đương nhiên rút ngắn đi. Firebase hỗ trợ đa nền tảng, đa ngôn ngữ. Android, iOS đều chơi được với Firebase. Python, Nodejs, Java, PHP cũng đều có thể làm bạn với Firebase.
- Bảo mật và sự ổn định: Firebase hoạt động trên nền tảng Clould của Google. Do đó, bạn có thể yên tâm về vấn đề bảo mật và ổn định. Không cần lo lắng về việc server shutdown, tấn công mạng DDOS, mạng mẽo lúc nào cũng ổn định.
- Tính linh hoạt và khả năng mở rộng: Firebase sử dụng cấu trúc của NoSQL nên nó hoàng toàn dễ dàng mở rộng và đáp ứng yêu cầu database lớn và realtime.
Ví dụ tích hợp Python với Firebase's REST API
Như đã nói ở trên, Firebase hỗ trợ rất nhiều ngôn ngữ, trong đó có Python. Ở ví dụ này, mình sẽ thực hiện việc tích hợp ở mức cơ bản nhất.
1. Chuẩn bị
Tất nhiên là môi trường Python 2 hoặc Python 3. Bạn cần có tài khoản Firebase và tạo project. Tạo tài khoản Firebase bạn có thể truy cập vào địa chỉ: https://firebase.google.com/ Để kết nối với Firebase bạn cần vào project của minh trên Firebase lấy ra những thông tin sau:
- Email: email đăng nhập tài khoản firebase
- URL Firebase: Ở đây mình có tạo ra 1 url: https://fir-fr.firebaseio.com/
- Secret: key access tới Firebase. Bạn có thể tìm nó ở đây:
2. Cài đặt
Để kết nối với Firebase và thao tác với nó bạn cần cài 2 lib sau của Python:
requests
python-firebase
Bạn có thể cài các lib này trên cả nền tảng Python 2 và Python 3. Ví dụ này mình viết trên Python 3. Bạn có thể cài đặt 2 lib này dễ dàng qua pip
pip install requests python-firebase
3. Bắt đầu
Mình sẽ viết code trực tiếp trên Python shell cho đơn giản. Bước đầu tiên là Authentication. Nếu không authentication kết quả sẽ ra sao???
>>> from firebase.firebase import FirebaseApplication
>>> app = FirebaseApplication('https://fir-fr.firebaseio.com/', authentication=None)
>>> result = app.get('/users', None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/minhhahao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase/decorators.py", line 19, in wrapped
return f(*args, **kwargs)
File "/Users/minhhahao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase/firebase.py", line 274, in get
return make_get_request(endpoint, params, headers, connection=connection)
File "/Users/minhhahao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase/decorators.py", line 19, in wrapped
return f(*args, **kwargs)
File "/Users/minhhahao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/firebase/firebase.py", line 42, in make_get_request
response.raise_for_status()
File "/Users/minhhahao/.pyenv/versions/3.6.2/lib/python3.6/site-packages/requests/models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://fir-fr.firebaseio.com/users/.json
LOL 401 Client Error: Unauthorized for url
OK. Authentication nào:
>>> from firebase.firebase import FirebaseAuthentication
>>> authentication = FirebaseAuthentication(
... secret='abcd1234',
... email='xxx@gmail.com',
... extra={'id': 123}
... )
>>> app = FirebaseApplication('https://fir-fr.firebaseio.com/', authentication=authentication)
>>> result = app.get('/users', None)
>>> result
{'1': 'Minh', '2': 'Ha'}
Trong đoạn code auth trên bạn cần truyền vào:
abcd1234
là secret keyxxx@gmail.com
là gmail sử dụng dịch vụ Firebase
result
là dữ liệu get về từ API firebase. Dữ liệu ở trên mình fix data thẳng trên console UI của Firebase.
Phần trên mình đã thực hiện việc GET all users
collection.
Thử GET users
với id=1
>>> result = app.get('/users', '1')
>>> result
{'1': 'Minh'}
Hết thứ để GET rồi, tiếp theo là POST và PUT.
>>> new_user = 'Hao'
>>> result = app.post('/users', new_user)
>>> result
{'name': '-KxVX1rWsh_9mz9Ij4eU'}
>>> new_user2 = 'HaHa'
>>> result = app.put('/users', new_user2, 2) # update to users với id=2
-KxVX1rWsh_9mz9Ij4eU
là id được Firebase tự động sinh ra.
Cuối cùng là delete users
có id=1
z`
>>> app.delete('/users', '1')
Cơ bản là vậy!
Trên đây, mình đã giới thiệu những thông tin cơ bản nhất về việc tích hợp Python với Firebase's REST API. Cảm ơn vì đã đọc bài của mình
All rights reserved