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(...) 尝试过,但结果相同。

哦,是的,在我尝试使其工作时使用类似的代码,我得到了 errorOK 字符串一样,没有任何进一步的信息。

我通过wireshark探索了包,对我来说一切都很好。

我被困住了。

非常感谢任何帮助。

【问题讨论】:

您是否使用浏览器 devtools 网络选项卡查看发生了什么?有没有想过在proxy.conf.json 中使用代理配置? 你的User后端和前端模型是一样的吗?尝试从 get 调用中删除 &lt;User&gt; 演员表,看看是否有任何结果。 你能把你服务中的所有代码都从控制台中粘贴过来吗? @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

Angular集成Spring Boot,Spring Security,JWT和CORS

Angular 基本身份验证 Spring Boot