2011-07-20 10 views
16

Thông thường khi tôi nghĩ về các tham số trong URL, tôi nghĩ chuỗi truy vấn. Về mặt kỹ thuật, tuy nhiên, cũng hợp pháp để chỉ định tham số trong các phân đoạn đường dẫn. Như vậy cho một URL như sau:Trường hợp sử dụng thông số đường dẫn URL

http://www.a.com/frisbee/brand

Đó là pháp lý để viết những dòng này thay vì:

http://www.a.com/frisbee;color=red;size=small/brand;test=1

Trên thực tế tôi không bao giờ thấy điều này. Những khung công tác nào, nếu có, hãy tận dụng điều này?

Tôi đang làm việc với ASP.NET MVC3 vào cuối và tôi không chắc chắn rằng nó có thể trích xuất các loại thông số này.

+0

JAX-RS nhận ra và sử dụng chúng. –

+1

Nếu bạn đang sử dụng một khung công tác không hỗ trợ chúng, bạn luôn có thể thêm một số quy tắc ['mod_rewrite'] (http://httpd.apache.org/docs/current/mod/mod_rewrite.html) để chuyển đổi vào một chuỗi truy vấn thông thường. Mặc dù có thể chậm, vì vậy tôi sẽ tránh 'mod_rewrite' trong quá trình sản xuất. – pieman72

Trả lời

1

Vùng chứa Java Servlet sử dụng viết lại URL để duy trì trạng thái phiên khi máy khách không hỗ trợ cookie bằng cách nối thêm tham số đường dẫn. Đặc tả servlet cho biết tham số đường dẫn phải được đặt tên là jsessionid

ví dụ: http://example.com/servlet_path;jessionid=E60FF3ABD2926AD9AA45513A385E373D

Để làm việc này, bạn phải cẩn thận luôn chuyển các URL bạn gửi lại cho khách hàng thông qua response.encodeURL() hoặc response.encodeRedirectURL() để vùng chứa có thể thêm thông số đường dẫn cần thiết.

hỗ trợ tiếp theo được yêu cầu bởi các đặc điểm kỹ thuật cho các yêu cầu lập bản đồ để servlets

Đường dẫn sử dụng để lập bản đồ cho một servlet là URL yêu cầu từ các đối tượng yêu cầu trừ con đường bối cảnh và con đường thông số

2

Nhiều khung công tác hiện đại sẽ hỗ trợ chỉ định các biến như một phần của phân khúc đường dẫn, trong hệ thống phân tích cú pháp URL của chúng.

Symfony (PHP) và Django (Python) sẽ hỗ trợ cả hai khi chúng hỗ trợ trích xuất các giá trị từ URL thông qua các biểu thức chính quy.

Một khác biệt đáng kể là các tham số được chỉ định trong chuỗi truy vấn thường có thể theo thứ tự bất kỳ, vì chúng thường được phân tích cú pháp thành cấu trúc giống từ điển. Điều đó sẽ không áp dụng cho các tham số trong một đoạn đường dẫn. Dĩ nhiên bạn có thể phân tích chúng thành một từ điển, nhưng các khung mà tôi vừa đề cập sẽ không giúp bạn làm điều đó. Lưu ý rằng về mặt kỹ thuật thứ tự của các thông số là quan trọng trong một URI HTTP anyway, tức là một so sánh phù hợp của hai URL, nơi các tham số (trong đường dẫn hoặc trong chuỗi truy vấn) được theo thứ tự khác nhau sẽ phải giả định rằng họ có thể tham khảo một nguồn tài nguyên khác.