2015-04-02 12 views
5

mam ten kontroler wiosnąWiosna REST kontroler po prośba

@RestController 
public class GreetingController { 

    @RequestMapping(value = "/greeting", method = RequestMethod.POST) 
    public String greeting(@RequestParam("uouo") String uouo) { 
     return uouo; 
    } 
} 

i kiedy sprawdzając je

curl -k -i -X POST -H "Content-Type:application/json" -d uouo=test http://192.168.1.104:8080/api/greeting 

wynik testów

HTTP status 400 - Parametr Wymagany String ' uouo "nie jest obecne

Próbowałem może coś, ale myślę, że @RequestParam nie może używać dla POST zawsze przekazywał parametr w URL używając GET, używam postu tylko gdybym miał obiekt JSON jako parametr przy użyciu @RequestBody, czy jest jakiś sposób na wysłanie parametru string za pomocą POST?

Odpowiedz

6

Kontener Serwlet będzie dostarczać parametry z treści dla żądań POST, jeśli typem treści jest application/x-www-form-urlencoded. Zignoruje ciało, jeśli typem treści jest cokolwiek innego. To jest określone w Servlet Specification Chapter 3.1.1 When Parameters Are Available

są następujące warunki, które muszą być spełnione przed postaci postu dane zostaną zaludnione do zestawu parametrów:

  1. Żądanie to żądanie HTTP lub HTTPS.
  2. Metoda HTTP to POST.
  3. Typ zawartości to application/x-www-form-urlencoded.
  4. Serwlet nawiązał pierwsze połączenie z jedną z metod rodziny getParameter w obiekcie żądania.

Jeśli warunki nie są spełnione, a dane Formularz post nie jest wliczone w zestaw parametrów, dane pocztowe muszą być nadal dostępne dla serwletu poprzez strumień wejściowy żądanie obiektu. Jeśli spełnione są warunki, dane formularza końcowego nie będą już dostępne do bezpośredniego odczytu ze strumienia wejściowego obiektu żądania.

Ponieważ nie wysyłają żadnych JSON, wystarczy ustawić odpowiedni typ zawartości

curl -k -i -X POST -H "Content-Type:application/x-www-form-urlencoded" -d uouo=test http://192.168.1.104:8080/api/greeting 

albo niech curl wywnioskować to

curl -k -i -X POST -d uouo=test http://192.168.1.104:8080/api/greeting?uouo=test 

pamiętać, że nadal można przekazać parametry zapytań w Adres URL:

curl -k -i -X POST -H "Content-Type:application/json" http://192.168.1.104:8080/api/greeting?uouo=test 
Powiązane problemy