2015-04-02 18 views
5

Baharyay tarafından durma kontrol sonrası isteği

@RestController 
public class GreetingController { 

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

bu denetleyiciniz ve bunu

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

test

HTTP durum 400 sonucunu test ederken - Gerekli dize parametresi ' uouo 'mevcut değil

Her şeyi denedim ama sanırım @RequestParam POST için kullanamazsınız, her zaman GET kullanarak URL'de parametreyi geçti, sadece @RequestBody kullanarak parametre olarak JSON nesnesi olsaydı gönderimi kullanıyorum, POST kullanarak string parametresi gönderiminde herhangi bir yol var mı?

cevap

6

Servlet konteyneri, içerik türü application/x-www-form-urlencoded ise, POST istekleri için yalnızca vücuttan parametreler sağlar. İçerik türü başka bir şeyse bedeni yok sayar.

  1. talebi HTTP veya HTTPS istek: sonrası formu için karşılanması gereken koşullar veri parametresi kümesi doldurulur Bu, aşağıdaki Servlet Specification Chapter 3.1.1 When Parameters Are Available

    belirtilen bulunmaktadır.

  2. HTTP yöntemi POST.
  3. İçerik türü 'dur.
  4. Sunucu uygulaması, istek nesnesindeki getParameter yöntem ailesinin herhangi birinin ilk çağrısını yaptı. koşullar yerine getirilmediği ve sonrası bir şekilde veri parametre setinin dahil değilse

sonrası veriler yine talep nesnenin giriş akışı vasıtasıyla sunucu uygulaması için kullanılabilir olması gerekir. Koşullar karşılanırsa, form nesnesinin istek akışından doğrudan okumak için form formu verisi kullanılamaz. Eğer herhangi bir JSON göndermiyor olduğundan

, sadece uygun içerik türünü

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

set ya da hala sorgu parametrelerini geçebilir curl çıkarımda o

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

Not let URL

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