Reputation: 641
Using Spring Boot, I want to build a Rest controller. But Spring fails to convert Json to Java object automatically. And yes:
Here is my REST Controller:
@RestController
public class HelloController {
@RequestMapping(value= "/abc", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody MyResponse handlePurchase(@RequestParam A request){
return new MyResponse("Simply the best");
}
}
Here is A.java:
public class A implements Serializable {
private B something;
public B getSomething() {
return Something;
}
public void setSomething(B something) {
this.Something = something;
}
@Override
public String toString() {
return "A [Something=" + something + "]";
}
public A(B something) {
super();
this.Something = something;
}
public A() {
super();
}
}
Here is B.java which is used by A.java:
public class B implements Serializable {
private String something;
private int catsNumber;
private int dogsNumber;
public String getSomething() {
return something;
}
public void setSomething(String something) {
this.something = something;
}
public int getCatsNumber() {
return catsNumber;
}
public void setCatsNumber(int catsNumber) {
this.catsNumber = catsNumber;
}
public int getDogsNumber() {
return dogsNumber;
}
public void setDogsNumber(int dogsNumber) {
this.dogsNumber = dogsNumber;
}
@Override
public String toString() {
return "B [something=" + something + ", catsNumber=" + catsNumber + ", dogsNumber=" + dogsNumber + "]";
}
public B() {
super();
}
}
Hope someone can help me on this, neither worked yet:
Upvotes: 3
Views: 4450
Reputation: 2148
@RequestParam
indicates an url parameter http://foo.com?parameter=x
. When using post, you need to define a @RequestBody
@RequestMapping(value= "/abc", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public @ResponseBody MyResponse handlePurchase(@RequestBody A a){
return new MyResponse("Simply the best");
}
Upvotes: 2