如何解决如何在我的 angular 应用程序中调用和使用 spring REST POST API,它返回没有正文的字符串?
我试图从我的 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 方法需要三个参数 URL、Body 和 header。但在我的情况下,我的 spring REST API 不包含任何主体并返回一个字符串。因此,我将正文定义为 null,并将标题类型更改为文本,因为它默认为 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;
}
)
}
}
但是当我尝试将响应分配给字符串时,我收到无法将字符串分配给对象的错误。我有点困惑为什么会发生这个错误,因为我在定义我的服务时也将标头类型更改为字符串,但仍然收到错误。
如果有人指导我这会很有帮助,因为我是 angular 的新手,并且对 API 与 angular 的集成部分有点困惑。
解决方法
使用 { responseType: 'text' }
并发送一个不为空的空正文
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})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。