12/08/2018, 16:23

Giới thiệu Django REST framework

Tổng quan REST là viết tắt của REpresentational State Transfer (dịch nôn na là chuyển trạng thái đại diện) là một kiểu kiến trúc lập trình, nó định nghĩa các quy tắc để thiết kết các web service chú trọng vào tài nguyên hệ thống. Trong kiến trúc REST mọi thứ đều được coi là tài nguyên, chúng có ...

Tổng quan

REST là viết tắt của REpresentational State Transfer (dịch nôn na là chuyển trạng thái đại diện) là một kiểu kiến trúc lập trình, nó định nghĩa các quy tắc để thiết kết các web service chú trọng vào tài nguyên hệ thống. Trong kiến trúc REST mọi thứ đều được coi là tài nguyên, chúng có thể là: tệp văn bản, ảnh, trang html, video, hoặc dữ liệu động… REST server cung cấp quyền truy cập vào các tài nguyên, REST client truy cập và thay đổi các tài nguyên đó. Ở đây các tài nguyên được định danh dựa vào URI, REST sử dụng một vài đại diện để biểu diễn các tài nguyên như văn bản, JSON, XML.

Nguồn: tổng quan về REST - viblo

Ảnh demo qua về REST web service:

alt text

Sau đây mình xin giới thiệu với các bạn một thư viện hỗ trợ rất tốt việc tạo ra một RESTful Web API cho ứng dụng Django(Python).

Chuẩn bị

Yêu cầu

  • Kiến thức python căn bản Python.org
  • Postman hoặc CURL
  • Python 3

Setup môi trường

Đầu tiên ta tạo ra 1 virtualenv để làm việc

$ virtualenv3 ~/restEnv
$ source ~/restEnv/bin/activate 

Tiếp theo là install Django và django-rest

$ pip install django   # pip install --pre django -> nếu muốn cài Django 2.0 cho nó máu.
$ pip install djangorestframework 
$ pip install markdown       # Markdown support for the browsable API.
$ pip install django-filter  # Filtering support 

Tiếp theo ta tạo ra một project django

$ django-admin startproject djangorest  -> tạo project
$ python manage.py startapp rest  -> tạo một app tên là rest
$ python manage.py migrate  -> khởi tạo dữ liệu ban đầu cho project

Ok rồi. ta run thử lên xem thế nào

$ python manage.py runserver  -> tạo một app tên là rest

Nếu được như ảnh bên dưới thì ta đã sẵn sàng để đến với bước tiếp theo.

alt text

Bỏ qua ORM, Template cũng như URL của Django. Ta sẽ đến ngay phần làm thế nào để tạo ra 1 REST API bởi vì nó gần như tách biệt với các phần khác của django.

Ta thêm app framework và rest vào settings.py.

INSTALLED_APPS = (
    ...
    'rest_framework',
    'rest'
)

Tạo Model và data

Tiếp theo ta sẽ tạo ra một API dùng rest Các thành phần của một API gồm có

  • Model -----> làm việc với database
  • Serializer -----> chuyển queryset hoặc model của django thành dạng dữ liệu dễ dàng render trên web hơn và ngược lại,Chuyển JSON/XML do client chuyển lên thành object để Django có để xử lý dễ dàng.
  • API: ----->Phần xử lý logic
  • Controllers: (có thể có hoặc ko)

Create một model mới tên là Post.

# rest/models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=120)
    content = models.TextField()
    draft = models.BooleanField(default=False)
    read_time = models.IntegerField(default=0)
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    created = models.DateTimeField(auto_now=False, auto_now_add=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ["-created", "-updated"]

Tạo thay đổi trong database và apply thay đổi bằng lệnh

$ python manage.py makemigrations
$ python manage.py migrate

Add Post model vào admin để tạo data mẫu

# rest/admin.py
from django.contrib import admin
from rest.models import Post

admin.site.register(Post)

Ta tạo admin user

$ python manage.py createsuperuser

Sau khi tạo admin user. Chúng ta vào trong admin interface tại địa chỉ http://localhost:8000/admin/ và tạo một vài Post để có data khi test.

Sau khi có data ta sẽ viết REST API. Thường ta sẽ viết vào một file API riêng. nhưng ở đây vì project ko có gì đặc biệt nên ta viết luôn vào views.py cũng được             </div>
            
            <div class=

0