如何在angular2 post请求中发送2个对象

时间:2016-09-22 14:11:13

标签: java http angular typescript jersey

我有这段代码:

客户端(angular2)

     saveConfig(configType: ConfigTypes, gasConfigModel: GasConfigModel): any {
        console.info("sending post request");
        let headers = new Headers({
          'Content-Type': 'application/json'
        });

....

        return this.http
          .post(this.url, formParamString, ??, {headers: headers})
          .map(res => res.json())
          .subscribe(
            data => {
              console.info("next: ");
              console.info(data)
            },
            err => console.error(err)
          );
      }

服务器端:

@Path("/SaveConfig")
@POST
@Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public void saveConfig(MyObj my object, CountryGasStationConfig countryGasStationConfig) throws Exception {....}

我知道如何在帖子中发送一个对象,但是如何在帖子请求中发送2个对象?

2 个答案:

答案 0 :(得分:5)

由于您使用Json作为媒体,因此在技术上不可能实现这一点,因为单个文档中的两个单独的任意对象将是无效的Json。

但是,这里的潜在解决方案是创建一个包装这两个对象的对象。

请求对象

public SaveConfigRequest {
    private MyObj myObject;
    private CountryGasStationConfig countryGasStationConfig;


    //getters and setters
}

新方法签名

public void saveConfig(SaveConfigRequest request)

示例Json文档

{
  "myObject": {...},
  "countryGasStationConfig": {...}
}

答案 1 :(得分:0)

发送两个具有不同键值的对象, 将它们组合成大对象,如:

obj1;
obj2;
obj2send={
'obj1':obj1,
'obj2':obj2
};

现在这个 obj2send 中有两个对象