繁体   English   中英

如何在我的 angular 应用程序中调用和使用 spring REST POST API 返回没有正文的字符串?

[英]How to call and use the spring REST POST API in my angular app which is returning string without body?

我正在尝试从我的 spring 应用程序访问 POST API 到 angular 但有点困惑如何在我的 angular 应用程序中使用和访问给定的 API。

Spring REST API

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

给定的 API 从我的 oracle 数据库中获取欢迎消息详细信息并返回一个字符串值。 我正在尝试通过服务在我的 angular 代码中访问给定的 REST API。 我定义了邮政服务如下

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 方法需要三个 arguments URL、Body 和 header。但在我的例子中,我的 spring REST API 不包含任何正文并返回字符串。 因此,我将正文定义为 null 并将 header 类型更改为文本,因为默认情况下它是 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;
      }
    )
  }

}

但是当我尝试将响应分配给字符串时,我收到错误消息,即无法将字符串分配给 object。我有点困惑为什么会出现此错误,因为我在定义服务时也将 header 类型更改为字符串但仍然出现错误。

如果有人在这方面指导我,那将是一个很大的帮助,因为我是 angular 的新手,并且有点混淆 API 与 angular 的集成部分。

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

export class LoginService {

  constructor(private http : HttpClient) { }

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

}

也许您将 function 复制错了,但也请检查此处

@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})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM