似乎有一些关于此主题的问题,但是现在有许多问题已经过时,或者正在问合理的不同事情。
我正在使用SpringBoot和@RestController注释。
我有一个简单的用例。我想将JSON字符串发送到还包含RequestParameter的REST端点。
例如,我想做
curl -d '{ "name": "Joe Bloggs" }' http://localhost:8080/test?debug=Y
我不想在
中发送请求参数我有一个既接受请求参数又接受请求主体的方法签名(是Kotlin,但我认为这实际上没有任何区别)。
@PostMapping(value = ["/test"])
fun getGCP(@RequestBody json: String, @RequestParam debug: String) : String
我可以很好地访问RequestParam,但是RequestBody不仅包含我在正文中发送的JSON,还包含正文和请求参数的合并。在上面的示例中,它将为主体绑定输出以下内容
debug=Y&{"name": "Joe Blogs"}=
有没有一种方法可以简单地将RequestParameter和RequestBody作为单独的实体获取?
答案 0 :(得分:0)
问题是传入请求的内容编码。将curl命令更改为
curl -H "Content-Type: application/json" -d '{ "name": "Joe Bloggs" }' http://localhost:8080/test?debug=Y
导致我的输出显示
debug=N
json={ "name": "Joe Bloggs" }