Trang chủ > Uncategorized > Quản lí URI trong web application

Quản lí URI trong web application

Đây không phải là chuyện gì cao siêu quá về kĩ thuật, mà chỉ là có nghĩ tới hay không thôi. Khi làm việc với những MVC web framework thông thường như Spring hay Struts, nhất là khi web application sử dụng JavaScript và AJAX nhiều thì tập URI cần được quản lí và tổ chức một cách cẩn thận. ("MVC web framework thông thường" ở đây tôi dùng để chỉ các MVC framework mà bạn phải khai báo cụ thể Model, Controller, View và mapping giữa URI và Controller. Chú ý là những framework dạng component như JSF cũng có thể được xem là đi theo pattern MVC.)

Thông thường, URI được sử dụng ở phía client trong JavaScript hay view template dưới dạng string literal, có thể ghép nối một số parameter, kiểu như var url = 'delete/nodeId/' + nodeId. Vì URI chỉ là literal string, nên nói chung IDE sẽ không giúp gì nhiều cho chúng ta trong việc tìm kiếm hay báo lỗi. Khi đó chúng ta sẽ không dễ dàng tìm ra handler tương ứng với URI đó, và cũng khó tìm kiếm một cách nhanh chóng và chắc chắn những chỗ mà URI này được sử dụng. Ở dự án mà tôi đang tham gia, đôi khi tôi thấy những URI dạng /something/update/something/update2, chỉ vì lập trình viên không dám sửa handler có sẵn.  (Về lí thuyết, nếu mà cả phía client và server đều có unit test đầy đủ thì sửa URI cũng không quá rủi ro, nhưng không phải dự án nào cũng đủ tầm nhìn và tài nguyên để viết unit test tới mức độ này :D). Hệ quả là chúng ta sẽ có một tập URI lộn xộn, không theo một convention nào, và có thể trùng lặp về chức năng.

Về mặt người dùng, bạn có thoải mái không khi trả tiền và đưa dữ liệu lên một web application mà chỉ tập URI thôi đã lộn xộn rồi? (Tôi hỏi vậy thôi, chứ chắc là có, nhiều công ty dễ dãi một cách kì lạ khi đặt niềm tin vào mọi hệ thống mà họ sẽ thuê. Dù sao thì tôi chỉ là lập trình viên bình thường nên có khi chỉ nghĩ kiểu ếch ngồi đáy giếng.) Rõ ràng đây là một biểu hiện khó che giấu của một sự bất ổn trong quy trình phát triển, bất kể bạn được giới thiệu là họ áp dụng quy trình abcxyz gì đó.

Để quản lí được URI có lẽ không quá khó, nhưng quan trọng là phải làm sớm, nếu để muộn thì rủi ro và công sức bỏ ra sẽ nhiều hơn (hiện tại tôi đang ở tình cảnh "quá muộn"). Ý tưởng là chuyển tất cả URI ra một chỗ riêng, mỗi URI có một định danh riêng. Tất cả mọi tham chiếu tới một URI đều thông qua định danh thay vì literal string. (Nói thì phức tạp, tóm lại là có thể dùng constant string, enum, hay một cái gì đó tương tự cho các URI/URI template.) Như thế URI có thể được thay đổi mà không gây ảnh hưởng, hoặc chỉ gây ảnh hưởng ở mức kiểm soát được, tới những thành phần khác của hệ thống. Nếu trên URI chứa tham số, ví dụ như {id} trong testcase/{id}/update, thì URI cần được tạo ra từ URI template và các tham số, chứ không phải bằng cách xây dựng string thủ công như 'testcase/' + id + '/update'.

Và tất nhiên, cấu trúc có chặt chẽ đến đâu, unit test có phủ kín tới mấy thì việc quan trọng nhất vẫn là con người, cụ thể là lập trình viên. Cho nên dù thiết kế hay hiện thực có thế nào thì cũng phải nhớ nhắc nhở lập trình viên của bạn làm theo😀.

Tags:
  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: