2014-10-22 16 views
8

Đó là chữ ký cho oneUrl chức năng: oneUrl(route, url)
Và từ tài liệu:
là gì việc sử dụng 'lộ' trong các chức năng Restangular oneUrl() và allUrl()

oneUrl (tuyến đường, url): Điều này sẽ tạo đối tượng Restangular mới là chỉ là một con trỏ đến một phần tử có URL được chỉ định.

Với tôi, có vẻ như vô ích khi đặt một URL cho tài nguyên. Tại sao nó tồn tại trong danh sách đối số? Tại sao nó bắt buộc? Và làm thế nào nó có thể được sử dụng?

Trả lời

6

Khi sử dụng oneUrl Tôi đã tìm thấy tên tuyến đường được sử dụng để tạo URL cho các hoạt động PUTDELETE tiếp theo. Ví dụ: (mã giả):

// "GET /api/v2/users/3/ HTTP/1.1" 200 184 
var user = Restangular.oneUrl('myuser', 'http://localhost:8000/api/v2/users/3').get(); 
user.name = 'Fred'; 
// the following uses the route name and not the URL: 
// "PUT /api/v2/myuser HTTP/1.1 404 100 
user.put(); 

Tôi rất ngạc nhiên trước hành vi này. Tôi mong đợi put() để sử dụng cùng một URL với tên get(); điều này sẽ hữu ích trong trường hợp của tôi.

API của tôi sử dụng URL tuyệt đối bên trong tải trọng JSON để điều hướng đến tất cả các tài nguyên có liên quan và tôi muốn sử dụng các trường hợp oneUrl() đến GET/PUT mà không tạo lại các tuyến trong mã JS. Nhưng tôi khá mới với Restangular vì vậy tôi có thể không có mô hình tinh thần chính xác.

+1

Chính xác! Theo hiểu biết của tôi về thiết kế REST, các câu trả lời phải tự mô tả và chứa các liên kết đến các tài nguyên khác khi cần thiết. Và vì lý do đó, 'oneUrl' là một trong những phương pháp thường được sử dụng của Restangular cho tôi! Làm thế nào về việc vượt qua các url tuyệt đối cũng cho 'tuyến đường' ?! Nó có khắc phục được vấn đề bạn đã đề cập không? –

+0

@AlirezaMirian funny Tôi thậm chí không nghĩ về điều đó; nó có vẻ "sai" ... nhưng cuối cùng nó đã hoạt động. Nó không tạo ra url đúng vì tôi không chỉ định selfLink là trường 'url' của tôi. Cảm ơn ý tưởng. – saschwarz

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