Angular 6 和 Spring boot - 无法使用简单的 HttpClient 调用获取数据
Posted
技术标签:
【中文标题】Angular 6 和 Spring boot - 无法使用简单的 HttpClient 调用获取数据【英文标题】:Angular 6 and Spring boot - can't get data using simple HttpClient call 【发布时间】:2018-12-19 04:23:53 【问题描述】:我正在尝试让用户像这样使用 Angular 6 服务:
this.http.get<User>('http://localhost:8080/test', observe: 'response')
.subscribe(
data =>
console.log(data);
,
error =>
console.log(error);
);
后端部分代码如下:
@RestController
@RequestMapping("/test")
@Slf4j
public class TestController
@GetMapping
@ResponseStatus(HttpStatus.OK)
@CrossOrigin(origins = "http://localhost:4200")
public User test()
log.info("Test controller");
return new User(1, "VR", "123123", "A",
"B", "123", "a@a.com", true, true, 4);
问题是,尽管看起来一切正常,但我可以使用邮递员、浏览器的后端休息服务,但我在前端部分没有得到任何东西。
我在console.log(data);
和console.log(error);
设置了断点,但它并不止于此!
我哪里做错了?我对 Anular 和前端开发还是很陌生。 我尝试禁用我使用的 REST 端点的安全性,但结果仍然相同。
我通过.pipe(...)
尝试过,但结果相同。
哦,是的,在我尝试使其工作时使用类似的代码,我得到了 error
和 OK
字符串一样,没有任何进一步的信息。
我通过wireshark探索了包,对我来说一切都很好。
我被困住了。
非常感谢任何帮助。
【问题讨论】:
您是否使用浏览器 devtools 网络选项卡查看发生了什么?有没有想过在proxy.conf.json
中使用代理配置?
你的User后端和前端模型是一样的吗?尝试从 get 调用中删除 <User>
演员表,看看是否有任何结果。
你能把你服务中的所有代码都从控制台中粘贴过来吗?
@ibenjelloun 对服务器的两个请求,第一个 OPTIONS,第二个 GET 本身,状态均为 200。JWT 令牌存在于 GET 响应中。从未使用过 angula 代理,将阅读并尝试。
@GijsPost 非常感谢,您的评论很有帮助!
【参考方案1】:
@Gijs Post 指出我的正确答案:User
的后端和前端模型不一样。修复这个已解决的问题。
【讨论】:
以上是关于Angular 6 和 Spring boot - 无法使用简单的 HttpClient 调用获取数据的主要内容,如果未能解决你的问题,请参考以下文章
Angular 6 + Spring Boot:错误:“来自原点 'http://localhost:4200' 已被 CORS 策略阻止”
如何在 Angular 6 中显示 Spring Boot Data JPA Query 的响应
同一服务器上的两个项目具有不同的端口,但客户端(Angular 6)无法调用服务器(Spring Boot)
Spring Boot-Angular - 在地址栏中输入 Url 导致 404