Thiết kế API tốt là một nghệ thuật. API tốt được đánh giá cao ngay cả sau khi thời gian trôi qua. Theo tôi, không nên có sự thiên vị chung trên dòng cụ thể trừu tượng. Một số tham số có thể cụ thể như các ngày trong tuần, một số yêu cầu phải được thiết kế để mở rộng (và khá ngu ngốc khi biến chúng thành cụ thể, ví dụ, một phần của tên hàm), nhưng một số khác có thể đi xa hơn và để có vẻ thanh lịch API một cần cung cấp các cuộc gọi lại hoặc thậm chí ngôn ngữ cụ thể của tên miền sẽ giúp chống lại sự phức tạp.
Có những điều mới hiếm khi xảy ra dưới Mặt trăng. Hãy xem nghệ thuật trước đây, đặc biệt là các tiêu chuẩn và định dạng đã được thiết lập (ví dụ: nhiều thứ có thể được mô hình hóa sau các nguồn cấp dữ liệu, mô tả sự kiện được xây dựng bằng ical / vcal). Làm cho API của bạn dễ dàng được thêm vào, trong đó các thực thể thường xuyên và có mặt ở khắp nơi là các phần mở rộng cụ thể và được hình dung là từ điển. Ngoài ra còn có một số mô hình được thiết lập tốt để xử lý các tình huống cụ thể. Ví dụ: xử lý yêu cầu HTTP (và tương tự) có thể được mô hình hóa trong API với các đối tượng Yêu cầu và Phản hồi.
Trước khi thiết kế API, hãy động não về các khía cạnh, bao gồm cả những khía cạnh sẽ không được bao gồm, nhưng bạn phải nhận thức được. Ví dụ như ngôn ngữ, hướng viết, mã hóa, ngôn ngữ, thông tin múi giờ và những thứ tương tự. Hãy chú ý đến những nơi có thể xuất hiện bội số: danh sách sử dụng, không phải giá trị đơn lẻ cho chúng. Ví dụ: nếu bạn mong muốn API cho hệ thống videochat, API của bạn sẽ hữu ích hơn nhiều, nếu bạn giả sử N người tham gia, không chỉ hai (mặc dù thông số kỹ thuật của bạn tại thời điểm này là như vậy).
Đôi khi, trừu tượng giúp giảm độ phức tạp mạnh mẽ: ngay cả khi bạn thiết kế một máy tính chỉ thêm 3 + 4, 2 + 2 và 7 + 6, việc triển khai X + Y sẽ đơn giản hơn nhiều (với các giới hạn khả thi về mặt kỹ thuật trên X và Y và bao gồm ADD (X, Y) vào API của bạn thay vì ADD_3_4 (), ADD_2_2 (), ...
Nói chung, chọn cách này hay cách khác chỉ là một chi tiết kỹ thuật. Tài liệu của bạn nên mô tả các trường hợp sử dụng thường xuyên một cách cụ thể.
Bất cứ điều gì bạn làm về phía cấu trúc dữ liệu, hãy cung cấp trường cho phiên bản API.
Tóm lại, API nên giảm thiểu độ phức tạp khi giao dịch với phần mềm của bạn. Để đánh giá cao API, mức độ phức tạp tiếp xúc phải đủ. Việc quyết định hình thức API phụ thuộc rất nhiều vào tính ổn định của miền vấn đề. Do đó, cần có một số ước tính về việc phần mềm và API của nó sẽ phát triển theo hướng nào, bởi vì thông tin này có thể ảnh hưởng đến phương trình về độ phức tạp. Ngoài ra, API desing có sẵn để mọi người hiểu. Nếu có bất kỳ truyền thống tốt nào trong lĩnh vực công nghệ phần mềm bạn đang ở, hãy cố gắng không đi chệch hướng nhiều từ chúng, vì nó sẽ giúp hiểu. Hãy tính đến người mà bạn viết. Người dùng cao cấp hơn sẽ đánh giá cao tính tổng quát và tính linh hoạt, trong khi những người có ít kinh nghiệm có thể thoải mái hơn với việc cụ thể hóa. Tuy nhiên, chăm sóc cho phần lớn người dùng API ở đó,
Về mặt văn học, tôi có thể đề nghị "Các quy tắc đẹp" Các lập trình viên hàng đầu giải thích cách họ nghĩ của Andy Oram, Greg Wilson, vì tôi nghĩ rằng cái đẹp là về nhận thức sự tối ưu tiềm ẩn (và sự phù hợp cho mục đích nào đó).