2013-04-02 23 views
5

Muszę używać Amazon S3, aby programowo załadować trochę statycznych treści w Javie. Kiedy zacząłem czytać, odkryłem, że można to zrobić poprzez ich SDK (otwieranie interfejsów API REST) ​​lub używanie API REST. Z witryny AWS firmy Amazon można znaleźć:Amazon S3: SDK lub REST API

"Możesz wysyłać żądania do Amazon S3 za pomocą REST API lub AWS SDK".

Chciałem zrozumieć, które podejście jest lepsze. Myślę, że używanie SDK zdecydowanie ułatwi programowanie, ale jakie są plusy i minusy używania interfejsów API SDK Vs Rest bezpośrednio.

Z jakiegoś powodu odkryłem, że używanie REST API jest trudniejsze niż SDK. Udało mi się zrobić podstawowe rzeczy za pomocą SDk - utwórz wiadro, wylistuj obiekty, uzyskaj obiekt, unieważnij pamięć podręczną itp. Ale miałam problemy z napisaniem kodu dla REST API - w szczególności generowania podpisu.

Może to nie ma większego znaczenia, jeśli ostatecznie użyję SDK, ale nadal chciałbym wiedzieć, jak to zrobić za pomocą interfejsów API REST. Jeśli ktoś ma dobre przykłady kodu w Javie na dodawanie obiektów, pobieranie obiektów, otrzymywanie list itp., Byłoby to bardzo pomocne.

Dzięki!

+0

Przejdź do SDK. Używam C++ (który nie ma SDK) i idę do skraju za pomocą wbudowanego python i python SDK zamiast korzystania z API REST. Po prostu nie ma sensu spędzać czasu na wdrażaniu, debugowaniu i utrzymywaniu czegoś, co już zostało zrobione. Również interfejs REST API Amazon jest źle udokumentowany i często nie jest intuicyjny. – Dave

+0

Uważam, że bardzo ważne jest, aby móc korzystać z API REST bezpośrednio, więc rozumiesz, co się dzieje. Ale używałbym SDK do prawdziwej pracy. –

+0

Dzięki chłopaki za sugestię. Wybrałbym tylko SDK. – user1270392

Odpowiedz

6

Jeśli masz już pakiet SDK w swoim języku, przejdź do niego; to jest nie myślenia z perspektywy projektu. SDK to dodatkowa technika, którą już wykonali i przetestowali dla ciebie bez dodatkowych kosztów. Innymi słowy, pakiet SDK konwertuje już interfejs HTTP REST API do domeny/języka aplikacji.

Pomyśl o interfejsie API REST jako o najniższym wspólnym mianowniku, który musi obsługiwać AWS, oraz o tym, że pakiet SDK (prawdopodobnie) może implementować interfejs REST API poniżej. W niektórych przypadkach (np. Niektóre zestawy SDK systemu Windows Azure) pakiety SDK są rzeczywiście bardziej wydajne, ponieważ przełączają się na kanał komunikacyjny oparty na protokole TCP zamiast REST (który jest TCP plus HTTP), co eliminuje niektóre koszty związane z HTTP

Chyba że twoim całym celem jest poświęcenie dodatkowego czasu (testowanie + testowanie) tylko po to, aby nauczyć się bazowego API REST, głosowałbym na SDK.

+0

Dzięki Sid za odpowiedź! – user1270392

1

W mojej własnej opinii interfejs API daje ci możliwość robienia wszystkiego, co chcesz. Pomaga także, jeśli planujesz zmienić usługę w chmurze w przyszłości, ale jeśli zastosujesz podejście sdk, będziesz musiał ponownie kodować jako aplikację będzie wymagać zmiany, a pakiet SDK zostanie osadzony w aplikacji. Wiem, że odpowiedź jest spóźniona, ale może pomóc komuś.