Opracowujemy interfejs Rest API dla witryny eCommerce, który będzie wykorzystywany przez aplikacje mobilne.
Na stronie głównej aplikacji musimy wywoływać wiele zasobów, takich jak suwaki, najlepsze marki, najlepiej sprzedające się produkty, popularne produkty itp.
Dwie opcje wykonywania połączeń API:
Pojedyncze połączenie:
www.example.com/api/GetAllInHome
Wiele połączeń:
www.example.com/api/GetSliders
www.example.com/api/GetTopBrands
www.example.com/api/GetBestSellingProducts
www.example.com/api/GetTrendingProducts
Jakie jest najlepsze podejście do projektowania interfejsu API spoczynkowego - pojedyncze lub wielokrotne połączenie, wyjaśnienie zalet i wad?
Które zajmie więcej czasu, aby odpowiedzieć na prośbę?
źródło
TL; DR: Pomijając wszystkie inne kwestie związane z aplikacjami, wykonanie jednego połączenia byłoby szybsze niż wykonanie wielu połączeń. Asynchroniczne uruchamianie połączeń może skrócić całkowity czas potrzebny na wykonanie danej operacji z perspektywy użytkownika (co może być wszystkim, czego potrzebujesz), ale w sumie czas potrzebny na wielokrotne połączenia byłby dłuższy.
W twoim przypadku nie jestem jednak pewien, czy to cała historia.
Interfejsy API REST są terminem nieco dwuznacznym, ze względu na różne interpretacje artykułu, dzięki którym pomysł stał się popularny. Jednak nawet najbardziej liberalna interpretacja tego, co stanowi interfejs API REST, tak naprawdę nie pasuje.
Podstawową zasadą jest to, że masz zasób, na którym chcesz wykonać akcję. Identyfikator URI identyfikuje zasób, który Cię interesuje, i zwykle używasz czasowników HTTP, aby wskazać, co chcesz zrobić z tym zasobem.
W konkretnym przypadku wszystkie metody mają w nazwie słowo „get”. Powinieneś zmienić czasownik użyty w żądaniu HTTP, aby wskazać, że chcesz „uzyskać” zasób dostępny w tej lokalizacji.
Twój schemat URI powinien reprezentować logiczną hierarchię zasobów, które chcesz udostępnić użytkownikom interfejsu API, więc w twoim przypadku rozważę użycie czegoś takiego jak
/api/products?category=sliders
odfiltrowanie Twojej kolekcji produktów. Oznacza to, że gdy klienci chcą uzyskać wszystkie Twoje produkty, mogą po prostu pominąć ciąg zapytania.źródło
url
dla API, ale prośba o inne zasoby powinna być złożona za pomocą ciągu zapytania? , również to sprawdź .keep-alive
nie spowoduje całkowitego usunięcia tego.questions
, zobaczysz URI/questions
, kiedy klikniesz jeden z twoich ulubionych tagów, URI jest/questions/tagged/<tagname>