Java 如何使用cURL发送带有请求参数的POST请求?
我正在尝试使用cURL将POST请求发送到我的本地应用程序:Java 如何使用cURL发送带有请求参数的POST请求?,java,curl,spring-rest,Java,Curl,Spring Rest,我正在尝试使用cURL将POST请求发送到我的本地应用程序: host="http://localhost:8080" $(curl -s -X POST -H "Content-Type: application/json" -d '{"name":"Test", "description":"Test"}' $host/games/new?user_id=c13fb734-c72a-48a0-9fd7-5fbc79c6285a) 我的控制器: @RequestMapping(“游戏”) @
host="http://localhost:8080"
$(curl -s -X POST -H "Content-Type: application/json" -d '{"name":"Test", "description":"Test"}' $host/games/new?user_id=c13fb734-c72a-48a0-9fd7-5fbc79c6285a)
我的控制器:
@RequestMapping(“游戏”)
@RestController
公共类游戏控制器{
私有静态最终字符串ROOT\u URL=ServerConfig.GAMES\u HOST+“/GAMES”;
@后映射(value=“new”)
公共响应添加(@RequestParam(“user_id”)UUID userId,
@RequestBody字符串(新游戏){
String url=ROOT_url+“/new?userId=“+String.valueOf(userId);
RestTemplate=新的RestTemplate();
返回模板.postForEntity(url、newGame、String.class);
}
}
但在春天,我得到了一个错误:
{"errors":["user_id should be of type java.util.UUID"],"status":"BAD_REQUEST","message":"Failed to convert value of type 'java.lang.String' to required type 'java.util.UUID'; nested exception is java.lang.IllegalArgumentException: Invalid UUID string: new"}
也就是说,cURL将new
作为user\u id
的值发送。
错误在哪里?分析
长话短说,从概念上讲,@RequestParam
和@RequestBody
是互斥的:查询参数(@RequestParam
)作为请求主体发送
请参阅此处的其他详细信息:
@RequestParam
):将每个参数(即每个JSON属性)作为查询参数传递@RequestBody
),例如:
user\u id
参数。参数可以设置为@PathVariable
,@RequestMapping
应该使用适当的占位符来引用它如果在JSON中包含用户id会怎么样?例如
-d'{“名称”:“测试”,“描述”:“测试”,“用户id”:“c13fb734-c72a-48a0-9fd7-5fbc79c6285a”}