我已经使用Spring REST应用程序创建了一个Spring Boot。
这是我的控制器代码。
@RestController
public class SampleController {
@RequestMapping(value = "/sample/get", method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public Response getResponse(SampleDTO dto) {
Response response = new Response();
response.setResponseMsg("Hello "+dto.getFirstName());
return response;
}
}
这是我的SampleDTO
public class SampleDTO {
@JsonProperty("firstname")
private String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
这是我的Response对象
public class Response {
private String responseMsg;
public String getResponseMsg() {
return responseMsg;
}
public void setResponseMsg(String responseMsg) {
this.responseMsg = responseMsg;
}
}
当我尝试以这种方式访问服务时
http://localhost:8080/sample/get?firstName=mvg
我得到了这个预期的输出
{“responseMsg”:“Hello mvg”}
当我尝试以这种方式访问服务时
http://localhost:8080/sample/get?firstname=mvg
我收到了这个输出
{“responseMsg”:“Hello null”}
我的问题是如何将请求参数中的'firstname'映射到DTO的'firstName'?
提前致谢
答案 0 :(得分:0)
当您设置@JsonProperty(“firstname”)时,请确保导入此语句“import com.fasterxml.jackson.annotation.JsonProperty;”。如果您要发送更多属性并且您的bean类没有,那么您可以在bean名称的顶部设置@JsonIgnoreProperties(ignoreUnknown = true)。
您还缺少@RequestBody注释。你应该在getResponse方法中将其作为(@RequestBody SampleDTO dto)。
答案 1 :(得分:0)
答案 2 :(得分:-1)
首先,您需要选择您需要(或想要使用)param或model的方法。当您使用类似http://localhost:8080/sample/get?firstName=mvg
的内容时,您将数据作为请求参数传递。所以你需要使用@RequestParam注释。
使用@RequestParam注释的示例(使用在docs中解释)
@RequestMapping(method = RequestMethod.GET)
public Response foo(@RequestParam("firstName") String firstName) {
Response response = new Response();
response.setResponseMsg("Hello "+ firstName );
return response;
}