Powiedzmy, że istnieje Produkt z Zamówieniami. Jeśli poprosisz o/products/product_id, zwróci 404, jeśli product_id nie istnieje. Ale powinien/products/product_id/orders zwróci 404, jeśli nie ma zamówień na ten produkt lub powinien zwrócić pustą tablicę?Czy RESTful API powinien zwracać 404 dla tablic obiektów?
Odpowiedz
Chciałbym zwrócić pustą kolekcję. Produkt z zerowymi zamówieniami jest całkowicie poprawną koncepcją, więc istnienie pustej kolekcji zamówień ma więcej sensu niż 404, co sugerowałoby, że produkt ten nie ma kolekcji zamówień.
+ 1, Poszliśmy tą drogą i jestem zadowolony z decyzji. – ale
Czy zamówienia powinny być uważane za samodzielny zasób? lub jakąś informację zwróconą przez zasób product_id? – chernevik
Chernevik Tak. Jeśli jest to inny adres URL i może zwrócić wartość 200, oznacza to inny zasób. Serwer może obsługiwać oba zasoby przy użyciu tego samego kontrolera, ale są to dwa różne zasoby. –
Powinieneś zrobić tylko jeden z dwóch rzeczy
Albo Zwraca 200 (OK)
kod statusu oraz pustą tablicę w organizmie.
Lub Zwróć kod statusu 204 (NO CONTENT)
i NIE CIAŁA odpowiedzi.
Dla mnie opcja 2 wydaje się bardziej technicznie poprawna i zgodna z zasadami REST i HTTP.
Jednak opcja 1 wydaje się bardziej wydajna dla klienta - ponieważ klient nie potrzebuje dodatkowej logiki do rozróżnienia dwóch kodów statusu (sukcesu). Ponieważ wie, że zawsze otrzyma tablicę, to po prostu musi sprawdzić, czy to ma żadnego, jeden, lub wiele pozycji i przetwarza je odpowiednio
moim zdaniem:
Mówimy wartości stanu HTTP tutaj i powinien mieć wyższy poziom udzielania odpowiedzi.
Należy to zobaczyć w warstwach uczestników. Podobnie jak wtedy, gdy api nie jest w stanie odpowiedzieć na prośbę, na wypadek, gdyby połączenie api było nieosiągalne, mógłbyś odpowiedzieć 404.
Ale kiedy twój telefon dzwoni i może odpowiadać zbiorem danych, ale jest to pusta kolekcja, możesz zwrócić tylko http 200, z pustym wynikiem.
Chciałbym użyć wartości statusu http, aby podać wskazanie na sprawdzanie poprawności wniosku, a nie bezpośrednio uzależnić go od zawartości w głębszych warstwach api.
Albo można by ściśle przestrzegać protokołów znalezione w internecie, ale nikt ich nie następuje ...
Nie zwracać tablic. Zwraca obiekt w każdym razie, jak
{
offset: 30,
limit: 10,
arr: []
}
pozwala dodawać metadane (dla paginacji lub smth indziej)
zwykle z kodem stanu HTTP: 200
Również ten jest konwencjonalne zachowanie interfejsu API sieci, kierowane przez bezpieczeństwa dotyczy: https://www.owasp.org/index.php/OWASP_AJAX_Security_Guidelines#Always_return_JSON_with_an_Object_on_the_outside
- 1. Python: dlaczego isinstance może zwracać Fałsz, kiedy powinien zwracać True?
- 2. Budowanie API RESTful Flask dla Scrapy
- 3. Czy ten wynik Json powinien zwrócić 404 lub 200?
- 4. Jak zbudować RESTful API?
- 5. Drupal jako backend dla RESTful API?
- 6. Derby z RESTful API
- 7. Czy istnieje interfejs API (RESTful) dla stron man?
- 8. Symfony2 RESTful API + AngularJS
- 9. Korzystanie z RESTful API - czy jest bezpieczny?
- 10. Czy interfejs API wykresu Facebook jest interfejsem RESTful API?
- 11. Interfejs API RESTful ze skojarzeniami
- 12. auto_ptr dla tablic
- 13. Zlot lodu z tablic obiektów
- 14. tworzenie tablic obiektów w javascript
- 15. Jak rozwiązać "iterator powinien zwracać ciągi, a nie bajty"
- 16. Jak najlepiej utworzyć RESTful API w Node.js
- 17. CA1819: Właściwości nie powinny zwracać tablic - Jaka jest właściwa alternatywa?
- 18. Jak mogę wdrożyć RESTful API w Perlu?
- 19. Ładunek odpowiedzi paginacji z RESTful API
- 20. Węzeł żądania HTTP dla restful api, który zwraca JSONP
- 21. Czy restful API i usługa backendu (np. Parse) to samo?
- 22. Używanie czystych adresów URL w RESTful API
- 23. Restful API - obsługa dużych ilości danych
- 24. Z nowym silnikiem widoku Razor, czy mój HtmlHelpers powinien zwracać ciąg lub IHtmlString?
- 25. Przykład Swift i prośba o wstawienie dla RESTful API
- 26. Zapobieganie tworzeniu sesji na szynach 3.2.2 dla RESTful api
- 27. odtwarzacz YouTube API Zgłasza 404
- 28. Czy istnieje pakiet Java do testowania interfejsów API RESTful?
- 29. jak uwierzytelniać RESTful API w Laravel 5?
- 30. Witryna Symfony2 i interfejs API RESTful
yo możesz zdefiniować własne wyniki. Daj każdemu wynikowi inny identyfikator – Grumpy
+1: Debatujemy teraz nad tym samym pytaniem, korzystając z kolekcji ofert wideo. –
@Grumpy możesz wyjaśnić, co masz na myśli trochę więcej? – rbp