首页 > 解决方案 > 使用从角度到弹簧的表单数据发布请求

问题描述

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

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

  1. 格式为表单数据
  2. 关键是 reqData(强制)
  3. 值为 json(必填)

邮递员,请求

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

目前,这就是我的数据的样子:

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

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

添加更多关于我的后端代码:

我的休息 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);

标签: angularspringspring-mvcangular7angular-http

解决方案


要使用 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

希望它能解决你的问题。请让我知道这是否解决了您的问题


推荐阅读