【问题标题】:angular2 http post request can not receive parameterangular2 http post请求无法接收参数
【发布时间】:2017-12-24 02:18:23
【问题描述】:

我想发布一个简单的http请求,但是后端收不到参数

export class AppComponent {
  isMenuCollapsed$:Observable<boolean>;

  constructor(private store:Store<reducers.State>,private http:Http) {

    this.isMenuCollapsed$ = this.store.select(reducers.getIsCollapsed);
    let body: URLSearchParams = new URLSearchParams();

    body.set('username', 'admin');
    body.set('password', 'admin');
    let head = new Headers({
      'Content-Type': 'application/json'
    });
    http.post('api/user/auth',body).subscribe(v => console.log(v));
  }
}

这是我的后端代码:

@RestController
@RequestMapping("/user")
public class TestController {

    @GetMapping("/get")
    public String  test(){
        return "hello";
    }

    @PostMapping("/auth")
    public String  auth(HttpServletRequest request){
        return "username:" + request.getParameter("username") + 
                "|password:" + request.getParameter("password");
    }
}

当我使用常规方法时它起作用了:

enter image description here

但是当我使用 angular http 时,返回 null enter image description here

希望有人能帮帮我,谢谢!!!

【问题讨论】:

  • 我认为您的代码不正确,因为在 POST 方法中,您应该保存一个包含在数据模型中以实现持久性的响应主体。这也意味着在你的帖子中你应该为持久性创建一个对象。
  • 非常感谢,我只是发布一个对象并在后端代码中添加@RequestBody 注释。 .它工作! ^_^
  • 你能选择我的答案,让我们度过愉快的一天吗? :)

标签: angular angular2-http


【解决方案1】:

我认为你应该使用一些东西来获取请求正文而不是 getParameters。创建用户名和密码的简单对象,如

let body={username:"admin", password:"admin"}

在传递给请求之前对正文进行字符串化。

this.http.post(...., Json.stringify(body))

【讨论】:

  • 非常感谢,我只是发布一个对象并在后端代码中添加@RequestBody 注释。 .它工作! ^_^
【解决方案2】:

你需要让后端和前端发布对象

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 2017-03-10
    • 2017-10-07
    • 1970-01-01
    相关资源
    最近更新 更多