2010-06-28 41 views
6

Trong 4 năm kinh nghiệm của tôi, tôi đã phát triển rất nhiều ứng dụng web. Bây giờ, khái niệm về lập trình web ngày càng phổ biến, các API mới sẽ được phát hành hầu như hàng ngày. Tôi muốn phát triển một java API/thư viện cho một vài trong số các endpoints.Ex stackapps, reddit, digg vv ... Những gì tôi muốn biết từ bạn mọi người là,Phát triển API - Cân nhắc thiết kế

  • Làm thế nào là API của web thông thường ứng dụng khác với API của các thư viện này. Hoặc sự khác biệt là gì giữa hai thiết kế này từ thiết kế phối cảnh
  • Thực tiễn API phát triển tốt nhất là gì .
  • Tất cả các yếu tố mà tôi cần xem xét trước khi thiết kế API

.

Vui lòng nhận xét, nếu chi tiết không đủ.

+1

Câu hỏi hay. Nhìn về phía trước cho câu trả lời sâu sắc từ stackers. –

Trả lời

13

ổn định

Nếu bạn cung cấp một API để ứng dụng web của bạn, nó có lẽ là bởi vì bạn muốn người khác để xây dựng các ứng dụng sử dụng nó. Nếu nó không ổn định, họ sẽ ghét bạn vì buộc họ phải tuân theo các thay đổi thường xuyên thường xuyên của bạn. Nếu quá trình này mất quá nhiều thời gian, trang web của họ có thể vẫn không hoạt động trong một thời gian dài trong khi họ đang tìm ra cách làm mới trong API của bạn.

Nhờ nhỏ gọn

Bạn muốn API được hoàn chỉnh nhưng nhỏ gọn, như trong không quá nhiều để nhớ.

trực giao

thiết kế nó để có một và chỉ một cách để thay đổi mỗi tài sản hoặc kích hoạt một hành động. Các hành động trong API trực giao phải có tối thiểu (nếu có) các tác dụng phụ.

Ngoài ra, thực tiễn không tốt là xóa đối tượng địa lý khỏi API công khai khi được phát hành.

An ninh và xác thực

Kể từ khi API là web-tiếp xúc, bạn sẽ phải xác nhận từng yêu cầu và cấp quyền truy cập thích hợp. An ninh thông thường được áp dụng ở đây.

Responses nhanh hoặc Break thành từng miếng

Tôi tin rằng trong một môi trường web chúng ta nên có phản ứng nhanh và tránh các yêu cầu đó sẽ mất nhiều thời gian để hoàn thành. Nếu nó là không thể tránh khỏi thì tốt hơn là gửi một ACK và phá vỡ nhiệm vụ thành nhiều phần và các cuộc gọi tiếp theo.

0

Từ kinh nghiệm của tôi, tất cả các API tốt đều không được thực hiện để giải quyết vấn đề chung, nhưng để giải quyết vấn đề cho một số vấn đề đòi hỏi sự trừu tượng nhất định. Sự trừu tượng này sau đó phát triển theo yêu cầu và/hoặc sự thay đổi lớp cơ bản.

Vì vậy, thay vì tìm kiếm API sẽ làm tất cả, tôi bắt đầu bằng cách tìm một hoặc hai trường hợp tốt là API của bạn có thể hữu ích.

+0

Tôi không nghĩ rằng anh ấy muốn tìm hoặc thậm chí tạo một API mới, nhưng tạo một trình bao bọc xung quanh API hiện có để làm cho trang web ẩn đi. Điều này có đúng không, chedine? –

+0

No. Tôi muốn tạo một API. Ví dụ, digg đã công bố các điểm cuối HTTP của nó để truy cập các resouces của nó. Tôi muốn xây dựng một API java mã nguồn mở có thể kết nối với các thiết bị đầu cuối này dưới mui xe. – chedine

+0

Vẫn là vấn đề tương tự. Bạn không thể đơn giản có một giao diện tổng hợp mọi thứ, đúng không? Bạn không thể chỉ đơn giản là lấy những thứ phổ biến và để lại những thứ chuyên biệt sang một bên. Nếu đó là về làm cho một wrapper hỗ trợ các API trang web khác nhau, sau đó không phải là nó một API của chính nó? – Wernight

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