Was ist der Unterschied zwischen @FormDataParam
und @FormParam
?
Ich habe mehrere @FormDataParam
in einer Methode verwendet, aber es hat einen nicht unterstützten Typfehler ausgelöst. Aber wenn ich @FormParam
benutzt habe, habe ich die Werte bekommen.
Also, ich muss wissen, was der Unterschied zwischen den beiden ist?
@FormDataParam
soll mit Daten vom Typ Multipart verwendet werden (d. h. multipart/form-data
oder MediaType.MULTIPART_FORM_DATA
), was in seiner rohen Form ungefähr wie
Multipart wird hauptsächlich zum Senden von Binärdaten, wie Nicht-Textdateien, verwendet.
@FormParam
steht für URL-codierte Anfrageparameter (d. h. application/x-www-form-urlencoded
oder MediaType.APPLICATION_FORM_URLENCODED
), die in roher Form wie
Beide Typen werden hauptsächlich in clientseitigen Formularen verwendet. Zum Beispiel
%Vor% Das obige würde die Anfrageparameter als application/x-www-form-urlencoded
senden. Es würde in roher Form als
Auf der Serverseite können wir @FormParam
für jeden benannten Parameter im Formular
Aber wenn wir ein Bild zusammen mit den Parametern senden müssen, reicht application/x-form-url-encoded
data type nicht aus, da es sich nur um ASCII-Text handelt. Also müssen wir Multipart
Hier wird der Typ Multipart angegeben, jetzt sendet der Browser die Anfrage mit etwas wie
%Vor% Auf dem Server, ähnlich dem obigen application/x-www-form-urlencoded
-Beispiel, können wir für jeden Multipart-Parameter (oder genauer: für ein Feld) @FormDataParam
verwenden, um jeden Parameter
Siehe auch:
Aus der Dokumentation FormParam :
Bindet den / die Wert (e) eines Formularparameters, der in einer Anfrage enthalten ist Entitätshauptteil zu einem Ressourcenmethodenparameter. Werte sind URL-dekodiert es sei denn, dies ist mit der Encoded Annotation deaktiviert. Ein Standardwert kann mit der Annotation DefaultValue angegeben werden. Wenn die Anfrage Entitätshauptteil fehlt oder ist ein nicht unterstützter Medientyp, der Standardwert Wert wird verwendet.
und FormDataParam
Bindet die benannten Körperteile einer "multipart / form-data" -Anfragentität Körper zu einem Ressourcenmethodenparameter.
Tags und Links java jax-rs jersey multipartform-data