Web công khai
Bề mặt công khai của ecoma.io tuân theo một mô hình URL duy nhất:
/<locale>/<mount>/<path>
Ba segment
- locale — segment đầu tiên, luôn hiện diện. Các locale được hỗ trợ nằm
trong locale registry (
PUBLIC_LOCALEStrongapp/i18n). Tiếng Anh là/en/..., tiếng Việt là/vi/...; không có biến thể không prefix. - mount — application công khai. Các mount hiện có trong
app/layoutlàblog,docsvàdocs/api. Mount khớp theo full segment boundary:/en/docslàdocs, còn/en/bloggingkhông phảiblog. - path — phần sau mount. Nó opaque với nền tảng; application sở hữu mount quyết định resource đó có tồn tại hay không.
Ví dụ
| URL | Nghĩa |
|---|---|
/en | Locale root tiếng Anh |
/en/docs | Docs tiếng Anh, docs root |
/en/docs/getting-started | Docs tiếng Anh, Getting Started |
/vi/docs/getting-started/installation | Docs tiếng Việt, trang Cài đặt |
Parse nghiêm ngặt
Path không được normalize hay sửa giúp. Trailing slash, empty segment, hay locale không được hỗ trợ đều bị từ chối với lý do đã định kiểu (typed reason) thay vì âm thầm sửa:
/en → localized (en)
/EN/docs → invalid (unsupported_locale)
/en/docs/ → invalid (trailing_slash)
/en//docs → invalid (empty_segment)
Ranh giới
/là locale-resolution entry point. Nó không phục vụ nội dung và không tự redirect; policy resolve thuộc về caller.docs/apilà mount lồng nhau được dành riêng cho bề mặtapi-reference. Ứng dụng home không phục vụ nó — request tới/en/docs/apibị từ chối trước khi lookup content.
Mô hình nằm ở đâu
Mô hình URL không phải là một quy ước mà mỗi trang tự tuân theo — nó được thực
thi trong hai module nhỏ của apps/home mà mọi bề mặt public đều đi qua:
app/i18nsở hữu locale dimension: registryPUBLIC_LOCALES, parse segment đầu tiên và locale switching. Nó không biết gì về mount hay application.app/layoutsở hữu mount topology: registryPUBLIC_MOUNTS(blog,docs,docs/api), khớp một pathname với một mount và dựng liên kết ngược lại.
Thêm một locale hay một mount nghĩa là thêm một entry vào registry tương ứng; phần còn lại của nền tảng suy ra từ chính dữ liệu đó.
Tiếp: Nội dung và ngôn ngữ