从角度到弹簧发布带有表单数据的请求

时间:2019-04-25 06:17:03

标签: angular spring spring-mvc angular7 angular-http

我正在尝试使用angular及其http库向我的spring rest api发送发布请求。

目前在邮递员中(成功),我正在以这种方式发送数据:

  1. 格式为表格数据
  2. 密钥是reqData(强制性)
  3. 该值为json(强制性)

post-man,request

如何通过angular以相同的方式发送数据?

当前,这是我的数据的样子:

onSignIn(form: NgForm) {
    const email = form.value.email;
    const password = form.value.password;

    const reqData = {
      'app_uname': email,
      'app_pass': password
    };
}

添加有关我的后端代码的更多信息:

我的rest api看起来像这样:

@RequestMapping(value = "/login", method = RequestMethod.POST)

@ResponseBody
public ResponseEntity<String> handle(@RequestParam(value = "reqData") String reqData,HttpServletRequest request)

所以我应该发送一个键和值(我不知道打字稿中的数据结构,但是在Java中是MultiValueMap),其中键是reqData,值应该是字符串或json对象中的json。

如何将我的reqData json转换为MultiValueMap格式?

我也尝试了formData和Map:

const formData: FormData = new FormData();
    formData.append('reqData', JSON.stringify(reqData));

const map = new Map();
    map.set('reqData', reqData);

3 个答案:

答案 0 :(得分:0)

要使用formdata将数据发送到服务器,可以这样做

const email = form.value.email;
const password = form.value.password;

const formData: FormData = new FormData();
formData.append("email ", email);
formData.append("password ", password);

// then http post to server

修改

如果您想将数据作为json提交,则需要这样做

const email = form.value.email;
const password = form.value.password;

const reqData = {
  'app_uname': email,
  'app_pass': password
};

const formData: FormData = new FormData();
formData.append("reqData", JSON.stringify(reqData));

// then http post to server and in the server you need to parse the json string

希望它可以解决您的问题。请让我知道这是否可以解决您的问题

答案 1 :(得分:0)

您可以创建一种发布方法,如下所示:

var model = {email: youremail, password: yourpassword};
post(url: string, model: any): Observable <any> {
    let formData: FormData = new FormData(); 
    formData.append('app_uname', model.email); 
    formData.append('app_pass', model.password); 
    return this._http.post(url, formData)
        .map((response: Response) => {
            return response;
        }).catch(this.handleError); 
}

答案 2 :(得分:0)

这就是我将请求发送到后端的过程。

我创建了所需的json,然后创建了一个请求参数字符串

df['sum'] = (df[['a', 'b']].apply(lambda x: pd.to_numeric(x, errors='coerce'))
                           .sum(axis=1, min_count=1))
print (df)
   a  b  sum
0  c  d  NaN
1  1  2  3.0
2  3  4  7.0

已发送成功请求。