我想发出一个URL请求参数设置为对象值的POST请求。
例如
http://test/data?a=1&b=2&c=3
我想使用这样的类对此URL进行发布请求:
public class Data {
private Integer a;
private Integer b;
private Integer c;
}
我不想手动执行每个字段,就像这样:
public void sendRequest(Data data) {
String url = UriComponentsBuilder.fromHttpUrl("http://test/")
.queryParam("a", data.getA())
.queryParam("b", data.getB())
.queryParam("c", data.getC())
.toUriString();
restTemplate.postForObject(url, body, Void.class);
}
相反,我想使用整个对象:
public void sendRequest(Data data) {
String url = UriComponentsBuilder.fromHttpUrl("http://test/")
.queryParamsAll(data) //pseudo
.toUriString();
restTemplate.postForObject(url, body, Void.class);
}
答案 0 :(得分:0)
您的要求就像js中的QS。谢谢qianshui423/qs。它是用Java实现的QS。它是由一个中国人编码的。首先git克隆它,并使用以下cmd进行构建。您将在build / libs中获得一个名为“ qs-1.0.0.jar”的jar(JDK需要版本8)
# cd qs directory
./gradlew build -x test
导入它,我做一个简单的演示,如下所示。根据您的要求,您可以构建类以将Obj转移到QSObject中。除了toQString,QS可以将字符串解析为QSObject。我认为它功能强大。
import com.qs.core.QS;
import com.qs.core.model.QSObject;
public class Demo {
public static void main(String[] args) throws Exception{
QSObject qsobj = new QSObject();
qsobj.put("a",1);
qsobj.put("b",2);
qsobj.put("c",3);
String str = QS.toQString(qsobj);
System.out.println(str); // output is a=1&b=2&c=3
}
}