2009-10-02 11 views
36

Rozszerzamy nasz interfejs HTTP REST API, aby umożliwić klientom przesyłanie obrazów (na potrzeby tego pytania, zakładając dane binarne). Do tej pory dopuszczaliśmy tylko proste ciągi w naszych parametrach API. Jaki jest dobry sposób na przesyłanie danych binarnych? Czy byłoby żądanie formularza zakodowanego w base64? Czy adres URL stałby się zbyt długi, aby serwer internetowy mógł sobie z nim poradzić?Jaki jest dobry sposób przesyłania danych binarnych do usługi HTTP REST API?

Wszelkie sugestie/najlepsze praktyki?

+0

Być może zechcesz rzucić okiem na http://stackoverflow.com/questions/1500744 –

+1

Dlaczego używasz parametrów URI? Wszystko, czego potrzebujesz, można zamknąć w nagłówkach żądań HTTP. – Gandalf

Odpowiedz

34

Po prostu wyślij dane binarne bez zmian w treści POST, ale z odpowiednim nagłówkiem Content-Type (np. Image/jpeg) - myślę, że jest to najbardziej "RESTful" sposób.

(Generalnie, przy projektowaniu usług REST, im bardziej pracujesz z protokołem HTTP, jak to jest, zamiast próbować nakładać na siebie coś niepotrzebnego i złożonego, jak na przykład base64, tym lepiej. ostateczny protokół RESTful i typy zawartości pozwalają na różne "reprezentacje" w "Reprezentacyjnym przekazywaniu stanu")

Inną możliwością pamiętania jest akceptowanie adresów URL obrazów zamiast rzeczywistych plików fizycznych. Utrudnia to samodzielne aplikacje, które np. odczytać obraz z dysku użytkownika, ale ułatwić aplikacje typu mashup, w których obraz może zostać zwrócony jako adres URL z innej usługi.

Możesz pozwolić na obie opcje oczywiście.

+1

Jakiego typu zawartości powinniśmy używać do niestandardowych danych binarnych, które nie są obrazami JPEG? – Pacerier

+1

@Pacerier check out http://en.wikipedia.org/wiki/Internet_media_type –

+0

czy należy dodać nagłówek Content-Length do odpowiedzi, gdy ludzie próbują pobrać obraz? – Cmag

Powiązane problemy