2017-04-14 61 views
1

我想實現一個只需要請求有效負載中的一個命名參數的Web服務。在捲曲視圖中,它應該是像下面這樣: curl -X PATCH myurl.net/my_service -d「{mySingleParameter:49}」Spring:只有一個元素的請求有效載荷

我試圖用Spring來做,但我想知道要映射這樣的有效載荷對我的方法,我必須申報一個新班級。像:

... 
public static class PayloadWithSingleParamMSP{ 
    public Long mySingleParameter; 
} 

@RequestMapping(value = "my_service", method = RequestMethod.PATCH) 
public String myService(@RequestBody PayloadWithSingleParamMSP payload){ 
    Long valueWhichIReallyNeed = payload.mySingleParameter; 
    //do job 
    ... 
} 
... 

但是有沒有一種方法可以直接獲取我真正需要的值(mySingleParameter)?

回答

2

你有幾個選擇:

@RequestMapping(value = "my_service", method = RequestMethod.PATCH) 
    public String myService(@RequestBody ObjectNode payload){ 
     Long valueWhichIReallyNeed = payload.get("mySingleParameter").asLong(); 
     //do job 
     ... 
    } 

@RequestMapping(value = "my_service", method = RequestMethod.PATCH) 
public String myService(@RequestBody Map<String, String> payload){ 
    Long valueWhichIReallyNeed = Long.parseLong(payload.get("mySingleParameter")); 
    //do job 
    ... 
} 

甚至

@RequestMapping(value = "my_service", method = RequestMethod.PATCH) 
public String myService(@RequestBody Long mySingleParameter){ 
    Long valueWhichIReallyNeed = mySingleParameter; 
    //do job 
    // ... 
} 

但在後一種情況下你的捲髮看起來如下:

curl -X PATCH myurl.net/my_service -d "49" 

在這個問題的答案你可以找到更多的選擇:Passing multiple variables in @RequestBody to a Spring MVC controller using Ajax