2015-12-11 15 views
5

Tôi đang viết ứng dụng web đầu tiên của mình. Chỉ cần tự hỏi làm thế nào các quy ước là khi nói đến thiết kế REST API. Có tốt hơn để có nó phản ánh kiến ​​trúc phía máy chủ của tôi hoặc bất cứ điều gì có vẻ là dễ dàng hơn để lý do về?Một API REST có phản ánh kiến ​​trúc ứng dụng phía máy chủ hay không

Tôi đang nghĩ đến việc một trong hai thực hiện:

/serviceProvider/product 

hoặc

/product/serviceProvider 

kiến ​​trúc phía máy chủ của tôi đều tách ra thành các module bằng cách cung cấp dịch vụ tổ chức, tuy nhiên tất cả đều phơi bày một API truy vấn sản phẩm.

Trả lời

5

API lý tưởng nên được thiết kế để mang lại ý nghĩa nhất cho người tiêu dùng. Có không phải là thực sự là một lý do chính đáng để phản ánh "kiến trúc máy chủ" của bạn. Trong thực tế, đó là những gì thường được gọi là trừu tượng rò rỉ hoặc một API rò rỉ và được coi là xấu thực tế, chủ yếu là do cấu trúc ứng dụng của bạn có thể thay đổi và sau đó bạn có những kịch bản có thể:

  • bạn cần thay đổi API của bạn, đó là một nhiệm vụ không tầm thường khi nó đã được một ai đó sử dụng;
  • API của bạn ngừng phản ánh cấu trúc ứng dụng dẫn đến sự không nhất quán;
  • để lộ cấu trúc ứng dụng hoặc lược đồ cơ sở dữ liệu của bạn với mọi người có thể có các tác động bảo mật.

Với những điều này trong đầu, bạn cũng có thể thiết kế API tập trung vào tính dễ sử dụng ngay từ đầu. Người tiêu dùng API của bạn không cần phải biết hoặc quan tâm đến kiến ​​trúc ứng dụng của bạn.

+1

Thêm một hướng dẫn, giống như đặt tên cho giao diện sau khi triển khai mặc định. Thực hành không tốt. – inf3rno

0

Tôi tin rằng việc giữ trên cùng kiến ​​trúc là quan trọng vì bạn buộc phải cung cấp API đơn giản và nó sẽ thực thi bạn một kiến ​​trúc đơn giản ở phía máy chủ. Điều đó nói rằng, tất nhiên là bạn không muốn để lộ bất kỳ phương thức phía máy chủ hoặc thậm chí mọi thuộc tính phía máy chủ của các đối tượng trả về.

Trong Kaltura, chúng tôi cũng tin vào đường dẫn phẳng (không lồng nhau) để đơn giản hóa API. Để biết thêm hướng dẫn, hãy xem blog của tôi: http://restafar.com/create-new-rest-server/

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