Tôi đã tạo một ứng dụng Spring REST, nơi bạn có thể thực hiện các hoạt động CRUD dựa trên các phương thức HTTP POST, PUT, GET, DELETE. Tôi có mẫu URI điển hình củaLược đồ mã hóa URL REST của mùa xuân:% 20 hoặc + Cái nào?
http://host/root/{id}/{name}/{address} and etc.
Chúng tôi có một khách hàng đang truy cập dịch vụ REST này. Dường như họ đang gửi thông số cho tên và địa chỉ nhiều từ theo dạng sau:
http://host/root/11/John+Smith/10+Las+Vegas+USA
Họ đang sử dụng lược đồ mã hóa HTML dựa trên loại ứng dụng/x-www-form-urlencoded. Theo bài viết trong Wikipedia
Ứng dụng/x-www-form-urlencoded loại
Các mã hóa được sử dụng bởi mặc định dựa trên một phiên bản rất sớm của URI quy tắc trăm mã hóa nói chung , với số lượng sửa đổi chẳng hạn như bình thường hóa dòng mới và thay thế dấu cách bằng dấu "+" thay vì "% 20". - http://en.wikipedia.org/wiki/Percent-encoding
Tuy nhiên, chương trình mã hóa URL chuẩn sử dụng% 20 trong không gian thay thế trong mẫu URI. Cái nào đúng?
Spring REST của tôi tự động chuyển đổi% 20 thành dấu cách. Nó được giải thích một cách chính xác. Tôi đang sử dụng Spring 3.0.4. Khi + được đáp ứng bởi dịch vụ REST của tôi, nó được chấp nhận như là. Tất nhiên khi tôi đặt xác thực để loại trừ +, nó thực sự bị loại trừ như mong đợi.
Tôi có nằm trong tiêu chuẩn hoặc có tiêu chuẩn kép như vậy không? Hoặc là khách hàng sử dụng một chương trình cổ xưa?
Cảm ơn bạn đã trả lời. Đó là những gì tôi nghĩ. Định dạng "http: // host/root/11/John + Smith/10 + Las + Vegas + USA" là chính xác để sử dụng khi sử dụng Spring REST như trái ngược với Spring MVC. – chris
Với Spring MVC "http: // host/root/11 /? Name = John + Smith & address = 10 + Las + Vegas + USA" là chính xác. Định dạng "http: // host/root/11/John% 20Smith/10% 20Las% 20Vegas% 20USA" cũng chính xác về Spring MVC. – chris
Bây giờ khi tôi nói với một lập trình viên khác rằng chúng tôi có một dịch vụ REST tại sao anh ta lại giả sử sử dụng lược đồ mã hóa của ứng dụng/x-www-form-urlencoded để chuyển đổi không gian thành "+". Đây không phải là thuật ngữ chuẩn sao? Hoặc là sai lầm của tôi để giả định rằng họ biết điều đó? Hay tôi là người đưa ra giả định sai? – chris