3 điểm bởi GN⁺ 2023-12-19 | 1 bình luận | Chia sẻ qua WhatsApp

Cách cung cấp nội dung HTML

  • Giới thiệu cách trả về nội dung HTML và xử lý các yêu cầu AJAX bằng PostgREST và thư viện htmx.
  • htmx mong đợi phản hồi HTML và dùng phản hồi đó để thay thế các phần tử trong DOM.

Thiết lập chuẩn bị

  • Xây dựng ứng dụng việc cần làm (to-do) dựa trên tutorial 0.
  • Thực hiện mà không cần xác thực, đồng thời cấp mọi quyền trên bảng todos cho người dùng web_anon.
  • Thêm text/html làm media type handler để PostgREST nhận diện các yêu cầu từ trình duyệt web là tài liệu HTML.

Tạo phản hồi HTML

Liệt kê và tạo việc cần làm

  • Tạo một hàm hiển thị danh sách việc cần làm đã được nhập sẵn trong cơ sở dữ liệu.
  • Hàm này được dùng để xây dựng template danh sách việc cần làm và không được dùng làm endpoint PostgREST.
  • Thêm endpoint để đăng ký việc cần làm vào cơ sở dữ liệu và chỉnh sửa trang /rpc/index.

Chỉnh sửa và xóa việc cần làm

  • Chỉnh sửa hàm api.html_todo để nó trở nên đầy đủ tính năng hơn.
  • Thêm các tính năng htmx mới: thay đổi trạng thái việc cần làm, trả về HTML có thể chỉnh sửa cho việc cần làm, và xóa việc cần làm.
  • Thêm endpoint để chỉnh sửa việc cần làm cũng như cập nhật và xóa việc cần làm trong cơ sở dữ liệu.

Ý kiến của GN⁺

  • Bài viết này có thể sẽ thú vị với các lập trình viên web vì nó giải thích cách dùng PostgREST và thư viện htmx để cung cấp nội dung HTML động trong ứng dụng web.
  • Việc cập nhật trang web bất đồng bộ bằng AJAX là một phần quan trọng của phát triển web hiện đại, và bài viết này cung cấp ví dụ cụ thể để triển khai tính năng đó.
  • Đây là tài liệu tốt để học cách cải thiện giao diện người dùng và tối ưu giao tiếp giữa máy chủ và máy khách.

1 bình luận

 
GN⁺ 2023-12-19
Ý kiến trên Hacker News
  • Tóm tắt các bình luận trên Hacker News về PostgREST:
    • Sự yêu thích dành cho dự án mã nguồn mở PostgREST: Một người dùng cho biết PostgREST là một trong những dự án mã nguồn mở họ yêu thích nhất, đồng thời nhận xét thành công của Supabase có được là nhờ thiết kế xuất sắc của PostgREST và Postgres. Người này nói họ không rõ Supabase tài trợ cho dự án PostgREST bao nhiêu, nhưng vẫn thấy đáng tiếc khi dù có nhiều công ty sử dụng, dự án chỉ có 12 nhà tài trợ.
    • Khó khăn khi phát triển ứng dụng với PostgREST: Một người dùng khác cho biết trải nghiệm phát triển ứng dụng bằng PostgREST của họ không tốt, và chỉ ra rằng ngay cả những framework trông có vẻ đơn giản cũng sẽ gặp vấn đề khi yêu cầu trở nên phức tạp. Trong trường hợp này, các lập trình viên phải viết rất nhiều stored procedure trong cơ sở dữ liệu để đạt được kết quả mong muốn, và điều đó gây ra vấn đề về khả năng mở rộng.
    • Khó khăn trong bảo trì: Một người dùng khác nhận định rằng PostgREST rất ấn tượng như một bản chứng minh khái niệm, nhưng việc bảo trì một ứng dụng web phức tạp ngoài thực tế có lẽ sẽ là cơn ác mộng.
    • Sức hấp dẫn của stack phát triển web đơn giản: Một người dùng đánh giá cao stack phát triển web chỉ gồm HTML và cơ sở dữ liệu, và xem việc không cần backend hay frontend riêng biệt là một điểm tích cực.
    • Mẫu lập trình trong các ứng dụng mới/hiện đại: Lấy ví dụ về cơ sở dữ liệu tài liệu JSON như Couchdb, một người dùng mô tả cách client có thể truy cập trực tiếp vào cơ sở dữ liệu để nhận HTML hoặc JSON. Tuy nhiên, họ cũng nói rằng cách làm này gây khó khăn cho bảo trì nên việc phát triển đã bị dừng lại.
    • Tính độc đáo của PostgREST từ góc nhìn Haskell: Một người dùng cho rằng nếu nhìn từ góc độ Haskell thì PostgREST là một dự án hiển nhiên, và chính điều đó lại là thiên tài của dự án này.
    • Giới thiệu SmoothDB: Một nhà phát triển giới thiệu rằng họ đã công khai trên GitHub một dự án mới tên là SmoothDB, với mục tiêu tương thích với PostgREST, và cho biết hiện dự án vẫn đang ở bản beta. SmoothDB được viết bằng Go và có thể được dùng độc lập hoặc như một mô-đun trong các ứng dụng máy chủ phức tạp.
    • Bài viết về pipeline kiểm chứng dữ liệu dùng PostgREST: Một người dùng cho biết họ đã viết một bài về cách sử dụng PostgREST như một pipeline kiểm chứng dữ liệu tổng quát, và đang chuẩn bị bài tiếp theo về cách dùng nó như một lớp CQRS/REST API.
    • Kết hợp PostgREST và HTMX: Một người dùng cho biết họ đã dùng PostgREST trong một dự án trước đây và đánh giá rằng nó kết hợp tốt với HTMX. Tuy nhiên, họ cũng bày tỏ lo ngại về việc bảo trì các template HTMX bên trong các hàm SQL.
    • Công cụ bổ sung để phát triển thành một stack có thể bảo trì: Một người dùng đặt câu hỏi về những công cụ bổ sung cần thiết để phát triển khái niệm này thành một stack có thể bảo trì, cung cấp UX tốt cho các ứng dụng cỡ vừa và lớn.