Jak zbudować dobre (webowe) API

Zamierzam zbudować API dla aplikacji internetowej i interesuje mnie to, co ludzie mogą sugerować jako dobre praktyki.

Już planuję jego wersję (Wersja 1 może kontrolować tylko niektóre aspekty systemu, Wersja 2 może kontrolować więcej, ale może to wymagać zmiany w sposobie uwierzytelniania, który byłby niezgodny z wersją 1), a uwierzytelnianie będzie różnić się od standardowej nazwy użytkownika/hasła używanego do logowania (jeśli ktoś używa złośliwego oprogramowania). narzędzie nie otworzy ich do pełnego podszywania się, tylko to, na co pozwala api).

Czy ktoś ma inne pomysły lub przykłady stron ze szczególnie dobrymi API, z których korzystałeś?

 22
Author: Laurel, 2008-08-29

5 answers

Przeczytaj książkę RESTful Web Services , która daje dobry przegląd tego, jak korzystać z odpoczynku w praktyce, i dostać się do prędkości wystarczająco szybko, aby zacząć teraz, z pewną pewnością. Jest to bardziej przydatne niż tylko przeglądanie istniejącego API, ponieważ omawia również wybory projektowe i kompromisy.

 11
Author: Peter Hilton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 06:30:49

1) upiec numer wersji bezpośrednio w adresie URL, a nie przekazując go jako parametr, ponieważ daje to pełną swobodę zmiany organizacji przestrzeni nazw API z każdym uderzeniem wersji.

2) zachowaj reguły przepisywania adresów URL (jeśli takie istnieją) tak proste/szczupłe, jak to możliwe( ale nie prostsze), jednocześnie czyniąc swoje adresy URL tak pięknymi, jak to możliwe(ale nie więcej).

3) zawsze szukaj najlepszego kodu statusu HTTP, który możesz znaleźć dla każdej odpowiedzi (i nie zapomnij o 202 i 207, dla przykład).

4) zaimplementuj logikę walidacji parametru oraz informacyjne komunikaty o błędach.

5) używaj nagłówków żądań HTTP w stosownych przypadkach zamiast parametrów(takich jak Accept, na przykład, aby umożliwić klientom określenie żądanego formatu danych odpowiedzi).

6) Uporządkuj swoje "rzeczowniki" w taki sposób, aby adresy URL używane przez różne grupy klientów były oddzielone w pobliżu "korzenia" drzewa adresów URL (ułatwia to egzekwowanie różnych mechanizmów uwierzytelniania dla te różne grupy odbiorców w razie potrzeby, a nawet mapować różne części drzewa adresów URL do różnych serwerów).

7) jeśli obsługujesz zwykłe strony internetowe z tej samej domeny co API i używasz tych samych poświadczeń uwierzytelniania, wymagaj nagłówka X-Requested-With w żądaniach API, aby uniknąć luk w XSRF.

 8
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-15 21:37:38

Rzuciłbym okiem na sprawdzone API:

  1. YouTube API
  2. Twitter API

Istnieje wiele argumentów na temat tego, czy te API są "dobre", ale myślę, że ich sukces jest zademonstrowany i wszystkie są łatwe w użyciu.

 7
Author: Ross,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-21 15:51:31

Użyj reszta .

Architektura RESTful web services jest łatwa do wdrożenia i wykorzystuje mocne strony i semantykę HTTP do tego, co były zamierzone. Jest zorientowany na zasoby, podobnie jak sama sieć.

Amazon Web Services , Google i wiele innych oferuje interfejsy API REST do interakcji z ich produktami.

 6
Author: David Crow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-29 01:08:07

Użyj odpoczynku.

Przeczytaj o standardach API lub skopiuj pomysły z jednego z popularnych.

Bądź ostrożny podczas uwierzytelniania użytkowników.

Start bardzo bardzo prosty.

Zbuduj stronę, która używa Twojego API (nawet jeśli nie jest przydatna), aby sprawdzić, czy wszystko działa. Być może mógłbyś zbudować mobilną wersję strony lub coś, co zmusi cię do korzystania z API w dużej mierze.

 3
Author: Rich Bradshaw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 23:02:33