मेरे पास स्प्रिंग 3.2 एप्लिकेशन है और मैंने स्प्रिंग एमवीसी के आधार पर this उदाहरण के बाद एक आरईएसटी एपीआई बनाया है। अब मुझे विभिन्न http विधियों (उदा .: POST और PUT विधियों) के लिए कुछ डेटा मान्य करने का प्रयास करते समय कुछ समस्याएं आ रही हैं।स्प्रिंग रेस्ट एपीआई सत्यापन
public class myItem{
@NotEmpty
private String foo;
@NotEmpty
private String bar;
public myItem(String foo){
this.foo = foo;
this.bar = "";
}
public myItem(String foo, String bar){
this.foo = foo;
this.bar = bar;
}
/* getters & setters omitted */
}
यह POJO अलग अनुरोध तरीकों में पुन: उपयोग किया जाता है:
यह एक बहुत सरल उदाहरण होगा।
यह मेरा सरलीकृत नियंत्रक होगा:
@Controller
@RequestMapping("/api/item")
public class myItemController{
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody myItem createItem(@Valid @RequestBody myItem item){
/* do some stuff */
return item; //inserted item returned
}
@RequestMapping(value="/", method=RequestMethod.PUT)
@ResponseStatus(HttpStatus.NO_CONTENT)
public @ResponseBody myItem createItem(@Valid @RequestBody myItem item){
/* do some stuff */
return item //updated item returned
}
}
POST विधि मैं केवल उम्मीद foo फ़ील्ड सेट किया जा करने के लिए, तो इस अनुरोध के ऊपर टिप्पणी से पहले के साथ विफल हो जाएगा। PUT विधि में मैं foo और bar फ़ील्ड दोनों सेट होने की अपेक्षा करता हूं, इसलिए यह अनुरोध सफलतापूर्वक पूरा हो जाएगा।
इस तरह की स्थितियों से निपटने के लिए सही दृष्टिकोण क्या है: एक निश्चित अनुरोध विधि में आप सभी फ़ील्ड भरने की उम्मीद नहीं करते हैं (कुछ फ़ील्ड में डिफ़ॉल्ट मान हो सकते हैं, इसलिए आप सभी को जांचना नहीं चाहते हैं उन्हें, उर्फ बनाने), और एक और विधि में आपको सभी क्षेत्रों (उर्फ अपडेट) की जांच करनी होगी।
यह एकदम सही जवाब है। यह एक अच्छा दिन था जब उन्होंने https://jira.springsource.org/browse/SPR-6373 – digitaljoel
को सीखने के लिए बहुत कुछ छोड़ा ... बहुत सराहना की, धन्यवाद! – jarandaf