mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
4.0.2
This commit is contained in:
@@ -119,10 +119,12 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver {
|
||||
) throws Exception {
|
||||
if (openApiParams.contains(methodParameter)) {
|
||||
Object paramObj = this.getParamObject(methodParameter, nativeWebRequest);
|
||||
if (paramObj != null) {
|
||||
// JSR-303验证
|
||||
paramValidator.validateBizParam(paramObj);
|
||||
return paramObj;
|
||||
}
|
||||
}
|
||||
HandlerMethodArgumentResolver resolver = getOtherArgumentResolver(methodParameter);
|
||||
if (resolver != null) {
|
||||
return resolver.resolveArgument(
|
||||
@@ -147,10 +149,12 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver {
|
||||
HttpServletRequest request = (HttpServletRequest) nativeWebRequest.getNativeRequest();
|
||||
JSONObject requestParams = OpenUtil.getRequestParams(request);
|
||||
String bizContent = requestParams.getString(ParamNames.BIZ_CONTENT_NAME);
|
||||
if (bizContent == null) {
|
||||
return null;
|
||||
}
|
||||
// 方法参数类型
|
||||
Class<?> parameterType = methodParameter.getParameterType();
|
||||
Object param;
|
||||
if (bizContent != null) {
|
||||
// 如果是json字符串
|
||||
if (JSONValidator.from(bizContent).validate()) {
|
||||
param = JSON.parseObject(bizContent, parameterType);
|
||||
@@ -159,9 +163,6 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver {
|
||||
Map<String, Object> query = OpenUtil.parseQueryToMap(bizContent);
|
||||
param = new JSONObject(query).toJavaObject(parameterType);
|
||||
}
|
||||
} else {
|
||||
param = requestParams.toJavaObject(parameterType);
|
||||
}
|
||||
this.bindUploadFile(param, request);
|
||||
return param;
|
||||
}
|
||||
|
@@ -62,6 +62,15 @@ public class Example1001_BaseController {
|
||||
return story;
|
||||
}
|
||||
|
||||
// 参数绑定
|
||||
@Open(value = "story.param.bind", mergeResult = false)
|
||||
@RequestMapping("/get/param/v1")
|
||||
public StoryResult param(int id, String name) {
|
||||
StoryResult result = new StoryResult();
|
||||
result.setName("参数绑定:id:" + id + ", name:" + name);
|
||||
return result;
|
||||
}
|
||||
|
||||
// 忽略验证
|
||||
@Open(value = "story.get.ignore", ignoreValidate = true)
|
||||
@RequestMapping("/get/ignore/v1")
|
||||
|
57
sop-test/src/test/java/com/gitee/sop/test/ParamBindTest.java
Normal file
57
sop-test/src/test/java/com/gitee/sop/test/ParamBindTest.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.gitee.sop.test;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.gitee.sop.test.alipay.AlipaySignature;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 模仿支付宝客户端请求接口
|
||||
*/
|
||||
public class ParamBindTest extends TestBase {
|
||||
|
||||
String url = "http://localhost:8081";
|
||||
String appId = "2019032617262200001";
|
||||
// 平台提供的私钥
|
||||
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ=";
|
||||
|
||||
// 演示参数绑定,没有用用到biz_content
|
||||
@Test
|
||||
public void testGet() throws Exception {
|
||||
|
||||
// 公共请求参数
|
||||
Map<String, String> params = new HashMap<String, String>();
|
||||
params.put("app_id", appId);
|
||||
params.put("method", "story.param.bind");
|
||||
params.put("format", "json");
|
||||
params.put("charset", "utf-8");
|
||||
params.put("sign_type", "RSA2");
|
||||
params.put("timestamp", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||
params.put("version", "1.0");
|
||||
|
||||
// 业务参数
|
||||
params.put("id", "1");
|
||||
params.put("name", "葫芦娃");
|
||||
|
||||
String content = AlipaySignature.getSignContent(params);
|
||||
String sign = AlipaySignature.rsa256Sign(content, privateKey, "utf-8");
|
||||
params.put("sign", sign);
|
||||
|
||||
System.out.println("----------- 请求信息 -----------");
|
||||
System.out.println("请求参数:" + buildParamQuery(params));
|
||||
System.out.println("商户秘钥:" + privateKey);
|
||||
System.out.println("待签名内容:" + content);
|
||||
System.out.println("签名(sign):" + sign);
|
||||
System.out.println("URL参数:" + buildUrlQuery(params));
|
||||
|
||||
System.out.println("----------- 返回结果 -----------");
|
||||
String responseData = get(url, params);// 发送请求
|
||||
System.out.println(responseData);
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user