Was ist der Unterschied zwischen @FormDataParam und @FormParam?

10

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?

    
Partha Sarathi Ghosh 31.05.2016, 05:39
quelle

2 Antworten

10
  • @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

    aussieht %Vor%

    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

    aussehen %Vor%

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

gesendet werden %Vor%

Auf der Serverseite können wir @FormParam für jeden benannten Parameter im Formular

verwenden %Vor%

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

verwenden %Vor%

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

zu bezeichnen %Vor%

Siehe auch:

Paul Samsotha 31.05.2016, 05:47
quelle
1

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.

    
Rahul Tripathi 31.05.2016 05:48
quelle