2009-10-14 40 views
5

Quy ước chung để hỗ trợ nhiều biểu diễn (ví dụ: html, json, xml) cho tài nguyên (ví dụ: blog, người dùng) trong django là gì?Loại nội dung và biểu diễn

Trước tiên, tôi không biết cách định dạng url của mình. Ví dụ: việc bạn sử dụng một trong các url này để yêu cầu định dạng xml

  • /<resource>.<format>, ví dụ: /blogs/123.xml
  • /<format>/<resource>, ví dụ: /xml/blogs/123
  • /<resource>?format=<format>, ví dụ: /blogs/123?format=xml

Tôi có nên chỉ dựa vào thông số Content-Type được chuyển không? Điều gì về việc có nhiều đại diện di động (ví dụ: iphone, di động, cọ) và trình bày đầy đủ của trình duyệt?

Điều gì về chế độ xem? Quy ước để chọn đúng mẫu mà không cần nhiều báo cáo hoặc nhiều mã trùng lặp là gì.

Trả lời

7

Những gì tôi có thể làm, nếu điều này là để làm việc ra, là:

  • quan điểm của bạn tìm kiếm các Accept tiêu đề (Tôi nghĩ rằng đó là những gì bạn đang nói về) và quyết định content-type để gửi trở lại dựa trên tiêu đề Accept.
  • Bạn có phần mềm trung gian tìm kiếm phần mở rộng trong Yêu cầu-URI, xóa nó và thêm loại nội dung liên quan vào yêu cầu Accept tiêu đề.

Đối với giải pháp này, các loại nội dung trong URL sẽ luôn được thể hiện dưới dạng phần mở rộng tệp được liên kết, không phải là một phần của chuỗi truy vấn cũng như một phần của tên tài nguyên. Nhưng ngoài các yêu cầu do trình duyệt tạo ra, các loại nội dung nên được gửi qua tiêu đề Accept.

Vì vậy, yêu cầu đến ở như:

GET /blogs/123.xml HTTP/1.1 
Host: example.com 

Các middleware biến đổi đó để:

GET /blogs/123 HTTP/1.1 
Host: example.com 
Accept: application/xml 

xem bạn thấy application/xml và trả về một phản ứng với nội dung XML.

+0

Đây là một ý tưởng gọn gàng. –

+0

Gọn gàng (và +1) - nhưng bạn có thể cung cấp một số mã xem mẫu không? Điều này không có nguy cơ xả rác mã xem của bạn với nhiều công tắc tùy thuộc vào loại nội dung? Tôi không thể ngay lập tức nghĩ ra một cách thanh lịch xung quanh nó, nhưng tôi muốn được quan tâm để xem nếu có ai khác có thể. –

Các vấn đề liên quan