2015-04-24 19 views
6

Tôi muốn có khả năng xác định kích thước hình ảnh của một sản phẩm trong một yêu cầu, tôi có ý kiến ​​khác nhau về vấn đề này, ở đây đó là:thông số băng việc xac định trong yêu cầu GET REST API

mysuperstore.com/api/categories/40/products/53?width=100&height=100 

Tôi nghĩ rằng đây là thực hành xấu, bởi vì nó không rõ ràng chiều rộng và chiều cao có nghĩa là gì, có thể có kích thước vật lý của sản phẩm.

biến thể khác là:

mysuperstore.com/api/categories/40/products/53/image?width=100&height=100 

Nó trông khá tốt, nhưng tôi cần phải thực hiện hai yêu cầu trong trường hợp này, nó có vẻ như nó là một id tài nguyên (ảnh).

yêu cầu đầu tiên là cho sản phẩm

mysuperstore.com/api/categories/40/products/53/ 

một Thứ hai là cho URL hình ảnh

mysuperstore.com/api/categories/40/products/53/image?width=100&height=100 

Vâng, tôi không cần phải trả lại hình ảnh thô (dữ liệu), nhưng chỉ URL.
Tôi đang tạo API trên máy chủ PHP bằng cách sử dụng Slim Framework. Tôi đã tìm thấy ví dụ về yêu cầu API như vậy với các thông số tùy chọn

$app->get('/archive(/:year(/:month(/:day)))', function ($year = 2010, $month = 12, $day = 05) use ($app) { 
    echo sprintf('%s-%s-%s', $year, $month, $day); 
    print_r($app->request()->get()); 
}); 

Vì vậy, URL trước đó sẽ khớp với ví dụ này và tôi có thể chuyển tất cả các thông số bắt buộc trong một yêu cầu.

Vì vậy, câu hỏi của tôi là nếu thực hành tốt để làm như vậy, có thể URL này có thể gây nhầm lẫn cho người không quen với API.

mysuperstore.com/api/categories/40/products/53/image?width=100&height=100 

Vì vậy, tôi yêu cầu ai đó có nhiều kinh nghiệm hơn tôi, mục tiêu của tôi là tạo API có thể hiểu rõ ràng mà không cần đọc nhiều tài liệu API. Và API của tôi phải tuân theo tất cả các phương pháp hay nhất.

Đó là lý do tại sao tôi hỏi câu hỏi này, tôi hy vọng ai đó có thể giúp tôi trong vấn đề này.

Trả lời

3

tôi sẽ làm điều này:

mysuperstore.com/api/categories/40/products/53/?image[width]=100&image[height]=100 
+0

Cảm ơn tôi sẽ làm theo lời khuyên của bạn. – cbyoueyq

0

Tôi nghĩ rằng nó không liên quan đến khuôn khổ SLIM nhưng nhiều hơn một câu hỏi thực hiện thiết kế. Bạn luôn có thể kiểm tra điều này guide về phương pháp hay nhất về thiết kế API.

Đối với câu hỏi của bạn về hình ảnh đặc biệt, bạn có thể làm theo táo hoặc google hướng dẫn, họ đang sử dụng image_name [WIDTH] x [HEIGHT] .jpeg, ví dụ:

http://a4.mzstatic.com/us/r30/Purple7/v4/c2/36/25/c2362536-f6fc-4ef6-2a03-9b899ca00af9/screen480x480.jpeg

Images được tạo trước và có sẵn trên CDN. Tùy thuộc vào bao nhiêu cuộc gọi bạn sẽ phải xử lý nhưng tạo ra hình ảnh mới trên bay có thể rất tải tiêu thụ. Ít nhất bạn nên lưu trữ/lưu trữ các hình ảnh đã tạo ra.

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