Czy strona internetowa powinna używać własnego publicznego interfejsu API?

31

Zaczynam pisać serwis internetowy i zbudowałem z nodeJS i podejście RESTfulish.

Z tego co zebrałem:

  • Zaletą jest to, że nie trzeba powielać kodu.
  • Wady polegają na tym, że:
    • często aktualizuje publiczny interfejs API, ale należy go rozwiązać za pomocą wersji
    • nie można tak naprawdę zrobić buforowania i optymalizacji specyficznych dla usługi

Co uważa się za najlepszą praktykę? Czy strony takie jak Stack Exchange, Github, Twitter itp. Używają własnych interfejsów API dla swoich klientów?


źródło
12
Jedzenie własnego psiego jedzenia doprowadzi cię również do poprawy publicznego API
Ben Brocka
Tak właśnie robi Amazon.
OliverS
2
Aby dodać do argumentu OlverS, zobacz Google Platforms Rant
Brian

Odpowiedzi:

37

Powinieneś bezwzględnie używać własnego API. Ta koncepcja jest powszechnie znana jako karma dla psów i ma wiele zalet poza unikaniem powielania kodu.

  • Spójne zachowanie między Twoją witryną / produktem a tym, co napiszą klienci interfejsu API (tj. Ich oczekiwania względem interfejsu API)
  • Kolejna forma testowania.
  • Możesz i znajdziesz błędy w interfejsie API, zanim zrobią to Twoi klienci, dzięki czemu ich rozwiązania będą tańsze.

Chociaż chciałbym argumentować przeciwko jednemu ze swoich punktów: Państwo powinno nie być aktualizacją API często. Poświęć czas na zaprojektowanie i przetestowanie interfejsu API, który pozostanie przez jakiś czas. Na szczęście w ten sposób będzie to wymuszone. Tam, gdzie wcześniej łamałeś kod klienta, teraz łamiesz swój własny kod. Gdy musisz , tak, wersjonowanie jest rozwiązaniem, ale należy tego unikać.

Steven Evers
źródło
0

z jakiegoś powodu nie pozwoli mi się zalogować jako plakat pytania, ale to byłem ja. Nie mogę przyjąć twojej odpowiedzi, szkoda, że ​​nie, to ma sens.

Jak jednak nie chcesz aktualizować interfejsu API? Co z dodawaniem nowych funkcji, usuwaniem niepopularnych, refaktoryzacją itp.?

stanm87
źródło
Hej. To powinien być komentarz do jego odpowiedzi - ale nie sądzę, żebyś miał wystarczająco dużo przedstawicieli, aby móc komentować. W każdym razie chodzi o to, że nie powinieneś często aktualizować API . I nawet wtedy dodanie nowych funkcji nie stanowi problemu - nie może złamać istniejącego kodu. Po co usuwać niepopularne? Spraw, by były przestarzałe, i usuń je w przyszłości, gdy ludzie będą już długo reagować na wycofanie.
Maks
2
Dodawanie metod do interfejsu API jest w porządku, zmiana istniejącego interfejsu API jest zła, ponieważ spowoduje uszkodzenie dowolnego kodu zależnego od interfejsu API.
Bryan Oakley,
@ stanm87: Max i Bryan dobrze to powiedzieli. Należy unikać zmiany umowy interfejsu API (tj. Interfejsu i oczekiwanego działania, zachowania). Ludzie będą na tym polegać, jeśli użyją interfejsu API, a jeśli go zmienisz, spowoduje to uszkodzenie ich kodu.
Steven Evers
wielkie dzięki za wyjaśnienie. @Max Naprawdę nie mogę skomentować jego odpowiedzi
stanm87