如何在我的angular应用程序中调用和使用SpringRestPostAPI,它返回的字符串没有正文?

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

我正在尝试从我的spring应用程序访问postapi到angular,但是有点困惑如何在我的angular应用程序中使用和访问给定的api。
Spring座api

@RequestMapping(value = "/getWelcomeMessage", method = RequestMethod.POST)
    public String getLoginWelcomeMessage() {
        return details.getLoginWelcomeMessage();
    }

给定的api正在从我的oracledb获取欢迎消息的详细信息,并返回一个字符串值。我试图通过服务访问我的Angular 代码中给定的restapi。我对邮政服务的定义如下

export class LoginService {

  constructor(private http : HttpClient) { }

  welcomeMessageService(){
    const headers = {'content-type':'application/text'}
    return this.http.put("http://localhost:8080/API/getWelcomeMessage",null,
    {'headers':headers});
  }

}

因为post方法需要三个参数url、body和header。但在我的例子中,我的springrestapi不包含任何主体和返回字符串。因此,我必须将body定义为null,并将header类型更改为text,因为默认情况下它是jason。
最后,我尝试通过将给定的服务方法注入到我的组件中来访问它,如下所示-

export class LoginComponent implements OnInit {

  message:string;

  constructor(private loginService : LoginService) { }

  ngOnInit(): void {
    this.loginService.welcomeMessageService().subscribe(
      response =>{
        console.log(response);
        this.message = response;
      }
    )
  }

}

但是,当我试图将响应分配给字符串时,我得到了一个错误,字符串不能分配给对象。我有点困惑为什么会发生这个错误,因为我在定义服务时也将头类型更改为string,但仍然得到错误。
这可以是一个很大的帮助,如果有人指导我关于这一点,因为我是新的Angular 和有点混淆的集成部分的api与Angular 。

8xiog9wr

8xiog9wr1#

使用 { responseType: 'text' } 并发送一个不为null的空体

export class LoginService {

  constructor(private http : HttpClient) { }

  welcomeMessageService(){
    return this.http.put("http://localhost:8080/API/getWelcomeMessage",{},
    { responseType: 'text' });
  }

}

也许你复制了错误的函数,但也检查这里

@RequestMapping(value = "/getWelcomeMessage", method = RequestMethod.POST)
    public String getLoginWelcomeMessage() {
        return details.getLoginWelcomeMessage();
    }

这是一个post方法,不是您试图调用的put
至于cors错误,请在上面的后端添加以下内容 @Controller 或者 @RestControler 不管你有什么

@CrossOrigin(value = {"http://localhost:4200"}, methods = {GET,POST,PUT,DELETE})

相关问题