Spring Boot实践--PUT请求不能接收到参数的问题

2019独角兽企业重金招聘Python工程师标准>>> ...
摘要由CSDN通过智能技术生成

简介:

项目改造了下框架,把控制器的API全部REST化,不做不知道,SpringMVC的REST有各种坑让你去跳,顺利绕过它们花了我不少时间,这次来提下SpringMVC的PUT提交参数为null的情况。

不过发现了一个很好玩的现象:就是当PUT参数接收为空的时候,前台是正确传值,后端接收对象映射不上,即为空,通过打印:request.getInputStream流里的内容,发现是有参数的,就是没有映射进来,其实是:spring默认没有开启。

1:JSON提交方式: Content-Type:application/json

   后端:对象接收:除了:get请求,不需要增加@ReqeustBody注解,其它的都需要。

            参数接收:使用:@RequestParam 或者不用。

 使用这种请求: 其它后端同事开发的时候:客户端(SOAP)模拟请求时,有了@ReqeustBody参数接收不到,于是去掉,前端开发时&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我可以为您提供一个简单的Java-Spring Boot集成银联充值的示例代码,但请注意,这只是一个简单的示例,您需要根据自己的需求进行适当的修改和调整。 首先,您需要添加银联支付的依赖项。在您的pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>com.unionpay</groupId> <artifactId>acp-sdk</artifactId> <version>1.0.0</version> </dependency> ``` 然后,您可以创建一个Controller来处理充值请求。在这个示例中,我们将使用POST方法来接收充值请求,并将请求参数传递给银联支付接口。 ```java import com.unionpay.acp.sdk.AcpService; import com.unionpay.acp.sdk.LogUtil; import com.unionpay.acp.sdk.SDKConfig; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.Map; @RestController public class RechargeController { @Value("${unionpay.merId}") private String merId; // 商户号 @Value("${unionpay.frontUrl}") private String frontUrl; // 前台回调地址 @Value("${unionpay.backUrl}") private String backUrl; // 后台回调地址 @PostConstruct public void init() { // 初始化银联支付配置 SDKConfig.getConfig().loadPropertiesFromSrc(); } @PostMapping("/recharge") public String recharge(@RequestBody RechargeRequest request) { Map<String, String> requestData = new HashMap<>(); requestData.put("version", "5.1.0"); requestData.put("encoding", "UTF-8"); requestData.put("signMethod", "01"); requestData.put("txnType", "01"); requestData.put("txnSubType", "01"); requestData.put("bizType", "000201"); requestData.put("channelType", "08"); requestData.put("merId", merId); requestData.put("accessType", "0"); requestData.put("orderId", request.getOrderId()); requestData.put("txnTime", request.getTxnTime()); requestData.put("txnAmt", request.getTxnAmt()); requestData.put("currencyCode", "156"); requestData.put("frontUrl", frontUrl); requestData.put("backUrl", backUrl); requestData.put("payTimeout", request.getPayTimeout()); Map<String, String> responseData = AcpService.post(requestData, SDKConfig.getConfig().getBackRequestUrl()); if (AcpService.validate(responseData, "UTF-8")) { if ("00".equals(responseData.get("respCode"))) { // 充值成功,处理业务逻辑 return "success"; } else { // 充值失败,处理业务逻辑 return "failure"; } } else { // 验签失败,处理业务逻辑 return "failure"; } } } ``` 在上面的代码中,我们使用了银联提供的SDK进行支付接口的调用和数据验证。您需要根据自己的实际情况配置`merId`、`frontUrl`和`backUrl`等参数。 请注意,上述代码仅提供了一个简单的示例,实际集成银联支付时还需要考虑更多的安全性和错误处理。您可以根据银联提供的开发文档进行更详细的配置和调整。 希望对您有所帮助!如果您有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值