在 Spring Boot 应用程序中从 Angular JS 调用 Rest Services 时出错

Posted

技术标签:

【中文标题】在 Spring Boot 应用程序中从 Angular JS 调用 Rest Services 时出错【英文标题】:Error in calling Rest Services from Angular JS in a Spring Boot application 【发布时间】:2019-06-17 21:36:49 【问题描述】:

Spring Boot 应用程序在后端托管 REST 服务,在前端托管 Angular。 我正在从 UI 调用 REST。

我的代码

$http.get(urls.USER_SERVICE_API)
                .then(
                    function (response) 
                        console.log('Fetched successfully all users');
                        $localStorage.users = response.data;
                        deferred.resolve(response);
                    ,
                    function (errResponse) 
                        console.error('Error while loading users');
                        deferred.reject(errResponse);
                    
                );


app.constant('urls', 
BASE: '<a class="vglnk" href="http://localhost:8081/SpringBootCRUDApp" rel="nofollow"><span>http</span><span>://</span><span>localhost</span><span>:</span><span>8081</span><span>/</span><span>SpringBootCRUDApp</span></a>',
USER_SERVICE_API : '<a class="vglnk" href="http://localhost:8081/SpringBootCRUDApp/api/user/" rel="nofollow"><span>http</span><span>://</span><span>localhost</span><span>:</span><span>8081</span><span>/</span><span>SpringBootCRUDApp</span><span>/</span><span>api</span><span>/</span><span>user</span><span>/</span></a>'
);

谷歌浏览器的错误调试如下:

angular.min.js:103 GET http://localhost:8081/SpringBootCRUDApp/%3Ca%20class=%22vglnk%22%20href=%22http://localhost:8080/SpringBootCRUDApp/api/user/%22%20rel=%22nofollow%22%3E%3Cspan%3Ehttp%3C/span%3E%3Cspan%3E://%3C/span%3E%3Cspan%3Elocalhost%3C/span%3E%3Cspan%3E:%3C/span%3E%3Cspan%3E8080%3C/span%3E%3Cspan%3E/%3C/span%3E%3Cspan%3ESpringBootCRUDApp%3C/span%3E%3Cspan%3E/%3C/span%3E%3Cspan%3Eapi%3C/span%3E%3Cspan%3E/%3C/span%3E%3Cspan%3Euser%3C/span%3E%3Cspan%3E/%3C/span%3E%3C/a%3E 404

当从 POSTMAN 调用 REST 时,它是成功的。因此,从 UI 调用时会出现问题。请帮助我找出我在 UI 休息调用部分做错了什么。

Complete REST URL is ::

http://localhost:8081/SpringBootCRUDApp/api/user/

请帮忙!

【问题讨论】:

老兄... USER_SERVICE_API 是'&lt;a class="vglnk" href="http://localhost:8081/SpringBootCRUDApp/api/user/" rel="nofollow"&gt;&lt;span&gt;http&lt;/span&gt;&lt;span&gt;://&lt;/span&gt;&lt;span&gt;localhost&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;8081&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;SpringBootCRUDApp&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;api&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;user&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;/a&gt;,而不是您所期望的http://localhost:8081/SpringBootCRUDApp/api/user/.... 【参考方案1】:

您的 app.constants 中有错误的 URL。用 REST URL 替换它应该会给你想要的结果。

USER_SERVICE_API: '@987654321@'

您当前指定的网址中有很多未知标签。

【讨论】:

是的。我已更正 URL 并删除了所有不必要的标签。它现在工作。谢谢。 app.constant('urls', BASE: 'localhost:8081/SpringBootCRUDApp', USER_SERVICE_API : 'localhost:8081/SpringBootCRUDApp/api/user' );

以上是关于在 Spring Boot 应用程序中从 Angular JS 调用 Rest Services 时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring Boot 中从 JWT 安全检查中排除 URL

在 Spring Boot 中从命令行设置活动配置文件和配置位置

如何在我的 Spring Boot 应用程序中从 AWS 访问环境变量

在 CircleCi 中从 Spring Boot 访问 PostgreSQL 9.6

如何在 Spring Boot 中从 Azure SAML 2.0 应用程序获取角色或组

如何在spring boot中从同一个应用程序调用另一个api