[英]How does Angular know which Spring Boot REST API to invoke?
[英]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.