+7

Restful rails

1 REST

  • REST viết tắt cho REpresentational State Transfer
  • Khái niệm về REST được giới thiệu vào năm 2000 trong luận văn Tiến sĩ của Roy Fielding (đồng sáng lập giao thức HTTP).
  • REST định nghĩa các quy tắc kiến trúc để bạn thiết kế Web services, chú trọng vào tài nguyên hệ thống, bao gồm các trạng thái tài nguyên được định dạng như thế nào và được truyền tải qua HTTP, và được viết bởi nhiều ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng sử dụng, REST đã nổi lên trong những năm qua như là một mô hình thiết kế dịch vụ chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế SOAPWSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều.
  • Rest tuân thủ 4 nguyên tắc thiết kế cơ bản sau:
    • Sử dụng các phương thức HTTP một cách rõ ràng:
      • Dùng POST để tạo mới một tài nguyên
      • Dùng GET để truy xuất tài nguyên
      • Dùng PUT/PATCH để cập nhật tài nguyên
      • Dùng DELETE để xóa tài nguyên.
    • Phi trạng thái: Nó không lưu trữ trạng thái của client. Mà mọi thứ cần thiết cho một kết nối đều viết ở trong request một cách rõ ràng, giúp giảm gánh nặng cho server
    • Hiển thị cấu trúc thư mục như các URl
    • Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai.
  • Resources
    • Do REST tập trung vào tài nguyên, nên ta sẽ tìm hiểu qua một chút về tài nguyên trong REST

    • Các đặc tính của Resource:

    • Hiện thị dữ liệu: Dữ liệu có thể được thể hiện ở nhiều dạng khác nhau ( binary, JSON, XML .v.v)

    • Nhận diện rõ ràng: Mỗi URL tại một thời điểm chỉ trả về 1 tài nguyên xác định.

    • Dữ liệu điều khiển : cache-control.

    • Dữ liệu mô tả (metadata) : Kiểu nội dung, lần cập nhật mới .v.v

  • Ưu điểm của REST:
    • Thiết kế web trước đây sử dụng SOAP (Simple Object Access Protocol) và WSDL (Web Service Definition Language), tuy nhiên bây giờ REST tối ưu hơn so với 2 phương pháp này. Cụ thể hơn ta có thể xem bảng so sánh giữa REST và SOAP dưới đây

    • Rõ ràng về URL

    • Trả về nhiều định dạng khác nhau như: json, xml, ...

    • Code ngắn gọn dễ hiểu

    • Hiệu suất tốt, tin cậy, dễ phát triển.

  • Nhược điểm của REST:
    • Chỉ hoạt động trên giao thức HTTP
    • Bảo mật kém hơn so với SOAP
    • Do không lưu trạng thái giữa Client - Server nên khối lượng thông tin truyền tải sẽ lơn hơn. Sẽ tốn tài nguyên hơn.

2. Restful

  • RESTful là tên gọi của các ứng dụng được phát triển dưới kiến trúc REST

  • RESTfull Route:

    Method Action URL Route (Controller#Action) Mô tả
    GET index /posts posts#index Hiển thị danh sách các bài viết
    GET new /posts/new posts#new Trả về trang HTML chứa form để tạo bài viết
    GET show /posts/:id posts#show Hiển thị một bài viết với id cho trước
    GET edit /posts/:id/edit posts#edit Trả về trang HTML chứa form để chỉnh sửa bài viết
    POST create /posts posts#create Tạo bài viết
    PATCH/PUT update /posts/:id posts#update Cập nhật bài viết với id cho trước
    DELETE delete /posts/:id posts#destroy Xoá bài viết với id cho trước
  • Phân biệt PUT và PATCH:

    • Hiểu một cách đơn giản: PUT và PATCH đều dùng để cập nhật thông tin cho resource nhưng:
      • PUT (UPDATE): Cập nhật toàn bộ thông tin cho Resource (khi bạn muốn tạo mới hoặc thay thế resource đã có ).
      • PATCH (UPDATE): Cập nhật một phần hoặc toàn bộ thuông tin của Resource.

3. Một số status code thông dụng

  • 200 OK – Trả về thành công cho những phương thức GET, PUT, PATCH hoặc DELETE.
  • 201 Created – Trả về khi một Resouce vừa được tạo thành công.
  • 204 No Content – Trả về khi Resource xoá thành công.
  • 304 Not Modified – Client có thể sử dụng dữ liệu cache.
  • 400 Bad Request – Request không hợp lệ
  • 401 Unauthorized – Request cần có sự authentication.
  • 403 Forbidden – Server hiểu request nhưng bị từ chối không cho phép.
  • 404 Not Found – Không tìm thấy rource từ URI
  • 405 Method Not Allowed – Phương thức không cho phép với user hiện tại.
  • 410 Gone – Resource không còn tồn tại, Version cũ đã không còn hỗ trợ.
  • 415 Unsupported Media Type
  • 422 Unprocessable Entity – Dữ liệu không được kiểm chứng
  • 429 Too Many Requests – Request bị từ chối do bị giới hạn

Tài liệu tham khảo:

http://guides.rubyonrails.org/routing.html https://viblo.asia/p/thiet-ke-restful-api-GrLZD98Vlk0 https://gist.github.com/kienbt01359/6886972


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí