千万要小心啊, 同学们啊, curl 引发了很多的奇怪问题啊
curl 竟然需要 把url 用单引号括起来? .. 否则就无法传递query参数.. 中文也是。
真是把人搞晕了, 还以为是 @GetMapping 哪里的问题, 又以为是 参数前面不能添加 @Validated ..
我的请求脚本是:
curl -v http://localhost:9080/v2/paypalChargeCallback?token=7V603167LV687545X&returnUrl=www.qq.com&random=12
@GetMapping("/paypalChargeCallback")
public String paypalChargeCallback(@Validated PaypalChargeCallbackReqDTO reqDTO, @RequestHeader(value = "referer", required = false) String referer) { ...}
其中:
@Data
public class PaypalChargeCallbackReqDTO {
@ApiModelProperty(value = "paypal订单号", required = true)
private String token;
//资金账户
// @ApiModelProperty(value = "资金账户", required = true)
// @NotBlank(message = MsgCdConstant.ACCOUNT_NOT_BLANK)
// private String account;
@ApiModelProperty(value = "用户paypalId")
private String PayerID;
@ApiModelProperty(value = "前端跳转地址")
private String returnUrl;
@ApiModelProperty(value = "随机的交易验证码")
private String random;
}
发现只能传递一个参数, 那就是 token, 其他参数都是null, 为什么呢?
难道是不能通过对象来接收? 为什么服务器中可以, 测试没有问题, 本机就不行了呢?
其实也不是本机不行, 而是 通过 curl 不行, 最本质的原因是 需要 把url 用单引号括起来!
why?
因为 & 在 git bash 中被解析了吧, 从而失去了字面含义 !!
难道?
需要 -X GET ? 不需要, 因为默认就是GET
注意curl的-X参数不能小写, 否则:
Could not resolve proxy: GET
* Closing connection 0
curl: (5) Could not resolve proxy: GET
因为x参数表示代理: -x, --proxy [protocol://]host[:port] Use this proxy