Projektowanie dobrego API to sztuka. Dobre API jest doceniane nawet po upływie czasu. Moim zdaniem nie powinno być ogólnego nastawienia na abstrakcyjno-konkretnej linii. Niektóre parametry mogą być tak konkretne, jak dni tygodnia, niektóre wymagają zaprojektowania pod kątem rozszerzalności (i jest dość głupie, aby były konkretne, np. Część nazw funkcji), jeszcze inne mogą pójść jeszcze dalej i aby mieć elegancki Interfejs API, który należy udostępnić, może nawet wywoływać połączenia zwrotne, a nawet język specyficzny dla domeny.
Rzadko zdarzają się nowe rzeczy pod Księżycem. Spójrz na stan techniki, szczególnie ustalone standardy i formaty (np. Wiele rzeczy można modelować po kanałach, opisy zdarzeń zostały opracowane w ical / vcal). Uczyń swój interfejs API łatwym do dodawania, gdy częste i wszechobecne byty są konkretne, a przewidywane rozszerzenia to słowniki. Istnieją również pewne ugruntowane wzorce postępowania w określonych sytuacjach. Na przykład obsługa żądania HTTP (i podobnego) może być modelowana w interfejsie API za pomocą obiektów Request i Response.
Przed zaprojektowaniem interfejsu API przeprowadź burzę mózgów na temat aspektów, w tym tych, które nie zostaną uwzględnione, ale musisz o tym wiedzieć. Przykładami takich są język, kierunek pisania, kodowanie, ustawienia regionalne, informacje o strefie czasowej i tym podobne. Zwróć uwagę na miejsca, w których mogą występować wielokrotności: użyj listy, a nie pojedynczej wartości dla nich. Na przykład, jeśli planujesz API dla systemu wideo, twój API będzie znacznie bardziej użyteczny, jeśli przyjmiesz N uczestników, a nie tylko dwóch (nawet jeśli Twoje specyfikacje są w tej chwili).
Czasami bycie abstrakcyjnym pomaga drastycznie zmniejszyć złożoność: nawet jeśli zaprojektujesz kalkulator do dodawania tylko 3 + 4, 2 + 2 i 7 + 6, wdrożenie X + Y może być znacznie prostsze (z technicznie wykonalnymi granicami dla X i Y i dołącz ADD (X, Y) do interfejsu API zamiast ADD_3_4 (), ADD_2_2 (), ...
Podsumowując, wybór w ten czy inny sposób jest tylko szczegółem technicznym. Twoja dokumentacja powinna opisywać przypadki częstego użytkowania w konkretny sposób.
Cokolwiek zrobisz po stronie struktury danych, podaj pole dla wersji interfejsu API.
Podsumowując, interfejs API powinien minimalizować złożoność podczas obsługi oprogramowania. Aby docenić API, poziom ujawnionej złożoności powinien być odpowiedni. Wybór formy interfejsu API zależy w dużej mierze od stabilności domeny problemowej. Dlatego należy oszacować, w jakim kierunku będzie rosło oprogramowanie i jego interfejs API, ponieważ informacje te mogą wpływać na równanie złożoności. Również projektowanie interfejsu API jest dostępne dla ludzi do zrozumienia. Jeśli istnieją jakieś dobre tradycje w dziedzinie technologii oprogramowania, w której się znajdujesz, staraj się nie odbiegać od nich zbytnio, ponieważ pomoże to zrozumieć. Weź pod uwagę, dla którego piszesz. Bardziej zaawansowani użytkownicy docenią ogólność i elastyczność, a ci z mniejszym doświadczeniem mogą czuć się bardziej komfortowo z konkretami. Jednak dbaj o większość użytkowników interfejsu API,
Jeśli chodzi o literaturę, mogę polecić wiodącym programistom „Piękny kod”, wyjaśniającym, jak myślą Andy Oram, Greg Wilson, ponieważ uważam, że piękno polega na postrzeganiu ukrytej optymalności (i przydatności do określonego celu).