Chúng tôi đang khởi chạy API REST mới và tôi muốn một số đầu vào của cộng đồng về các thực tiễn tốt nhất xung quanh cách chúng tôi nên định dạng các tham số đầu vào:
Ngay bây giờ, API của chúng tôi rất tập trung vào JSON (chỉ trả về JSON). Cuộc tranh luận về việc chúng tôi muốn / cần trả lại XML hay không là một vấn đề riêng biệt.
Vì đầu ra API của chúng tôi là trung tâm JSON, chúng tôi đã đi vào một con đường nơi đầu vào của chúng tôi là một trung tâm JSON và tôi đã nghĩ rằng có thể thuận tiện cho một số nhưng nói chung là kỳ lạ.
Ví dụ: để có được một vài chi tiết sản phẩm trong đó nhiều sản phẩm có thể được kéo cùng một lúc chúng tôi hiện có:
http://our.api.com/Product?id=["101404","7267261"]
Chúng ta có nên đơn giản hóa điều này như:
http://our.api.com/Product?id=101404,7267261
Hoặc có sẵn đầu vào JSON? Thêm một nỗi đau?
Chúng tôi có thể muốn chấp nhận cả hai phong cách nhưng sự linh hoạt đó có thực sự gây ra nhiều nhầm lẫn và đau đầu (khả năng bảo trì, tài liệu, v.v.) không?
Một trường hợp phức tạp hơn là khi chúng tôi muốn cung cấp đầu vào phức tạp hơn. Ví dụ: nếu chúng tôi muốn cho phép nhiều bộ lọc trên tìm kiếm:
http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}
Chúng tôi không nhất thiết muốn đặt các loại bộ lọc (ví dụ: ProductType và color) làm tên yêu cầu như thế này:
http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]
Bởi vì chúng tôi muốn nhóm tất cả các bộ lọc đầu vào với nhau.
Cuối cùng, điều này thực sự quan trọng? Có thể có rất nhiều tiện ích JSON ngoài kia đến mức kiểu đầu vào không quan trọng lắm.
Tôi biết các máy khách JavaScript của chúng tôi thực hiện các cuộc gọi AJAX tới API có thể đánh giá cao các đầu vào JSON để làm cho cuộc sống của chúng dễ dàng hơn.
[]
cú pháp không phải lúc nào cũng được hỗ trợ (và mặc dù nó phổ biến, thậm chí có thể vi phạm thông số URI). Một số máy chủ HTTP và ngôn ngữ lập trình sẽ thích chỉ lặp lại tên (ví dụproductType=value1&productType=value2
).