如何将spring post api的@requestparams定义为angular的http post方法?

zyfwsgd6  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(436)

我有一个restapi,它接受用户名和密码这两个参数,并根据前端的用户输入将结果设为true或false。我在调用我的angular 8代码的RESTAPI时遇到了一些问题。
Spring座api

@RequestMapping(value = "/checkData", method = RequestMethod.POST)
public String Authentication(@RequestParam("username") String username, @RequestParam("password") String password) {

}

我试图通过angular 8应用程序通过服务访问给定的api,并将服务定义如下:
授权信息.ts

export class AuthLoginInfo {
    username: string;
    password: string;

    constructor(username: string, password: string) {
        this.username = username;
        this.password = password;
    }
}
checkLogin(userInfo : AuthLoginInfo){
     return this.http.post(`${API_URL}/APP/checkData/${userInfo.username}/
       ${userInfo.password}`,{},{responseType: 'text'})
  }

但当我运行我的应用程序时,我没有得到正确格式的参数。有人能告诉我如何在httppostapi中定义请求参数吗?
事先谢谢你的建议。

2lpgd968

2lpgd9681#

从前端发送它们的方式,它们被认为是路径参数而不是查询参数。以相同的方式配置后端

@RequestMapping(value = "/checkData/{username}/{password}", method = RequestMethod.POST)
public String Authentication(@PathParam("username") String username, @PathParam("password") String password) {

}

如果您想使用现有的代码并且不想更改后端,那么您必须调整前端。因为您的后端现在需要url中的查询参数,所以您需要在前端发送这些参数

checkLogin(userInfo : AuthLoginInfo){
     return this.http.post(`${API_URL}/APP/checkData?username=${userInfo.username}&
       password=${userInfo.password}`,{},{responseType: 'text'})
  }

相关问题