Wprowadzamy nowy interfejs API REST i chciałem, aby społeczność przekazała informacje o najlepszych praktykach dotyczących sposobu formatowania parametrów wejściowych:
Obecnie nasze API jest bardzo skoncentrowane na JSON (zwraca tylko JSON). Debata na temat tego, czy chcemy / musimy zwrócić XML, to osobna kwestia.
Ponieważ nasze dane wyjściowe API są skoncentrowane na JSON, poszliśmy ścieżką, w której nasze dane wejściowe są nieco skoncentrowane na JSON i pomyślałem, że może to być wygodne dla niektórych, ale ogólnie dziwne.
Na przykład, aby uzyskać kilka szczegółów produktu, w których można pobrać wiele produktów naraz, obecnie mamy:
http://our.api.com/Product?id=["101404","7267261"]
Czy powinniśmy to uprościć:
http://our.api.com/Product?id=101404,7267261
A może przydaje się wejście JSON? Więcej bólu?
Możemy zaakceptować oba style, ale czy ta elastyczność faktycznie powoduje więcej zamieszania i ból głowy (łatwość konserwacji, dokumentacja itp.)?
Bardziej złożony przypadek ma miejsce, gdy chcemy zaoferować bardziej złożone dane wejściowe. Na przykład, jeśli chcemy zezwolić na wiele filtrów podczas wyszukiwania:
http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}
Niekoniecznie chcemy umieszczać typy filtrów (np. ProductType i kolor) jako nazwy żądań takie jak to:
http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]
Ponieważ chcieliśmy zgrupować wszystkie filtry wejściowe razem.
Czy to naprawdę ma znaczenie? Może być prawdopodobne, że istnieje tak wiele narzędzi JSON, że typ danych wejściowych po prostu nie ma większego znaczenia.
Wiem, że nasi klienci JavaScript wykonujący wywołania AJAX do API mogą docenić dane wejściowe JSON, aby ułatwić im życie.
[]
składnia nie zawsze jest obsługiwana (i mimo że jest powszechna, może nawet naruszać specyfikację URI). Niektóre serwery HTTP i języki programowania wolą po prostu powtarzać nazwę (npproductType=value1&productType=value2
.).