如何在apache中从角度调用spring boot api
Posted
技术标签:
【中文标题】如何在apache中从角度调用spring boot api【英文标题】:how to call spring boot api from angular in apache 【发布时间】:2019-12-06 14:51:10 【问题描述】:我想从我的角度文件中调用 spring boot 中的 api 例如:profile.service.ts
private baseUrl = '/users';
constructor(private http: HttpClient)
getProfile(id: number): Observable<Object>
return this.http.get(`$this.baseUrl` + '/load/' + `$id`);
java 文件是:UsersController.java
@RestController
@RequestMapping("/users")
public class UsersController
@Autowired
private IUsersService iUsersService;
@GetMapping("/list/grid")
public Iterable<UsersViewModel> getAllEmployees()
return Dozer.mapList(iUsersService.getAll(), UsersViewModel.class);
@GetMapping("/load/id")
public UsersViewModel getUserById(@PathVariable(value = "id") Long userId)
return Dozer.mapClass(iUsersService.findById(userId).get(),UsersViewModel.class);
Angular 使用的服务器是 Apache,spring-boot 端口是 8090。 请帮帮我。
【问题讨论】:
【参考方案1】:你快到了。
@RestController
@CrossOrigin(origins = "http://localhost:4200")
public class UsersController
...
这里唯一值得注意的实现细节是@CrossOrigin
注释的使用。顾名思义,注解在服务器上启用了跨域资源共享(CORS)。
这一步并不总是必要的。由于我们将 Angular 前端部署到 http://localhost:4200 并将 Boot 后端部署到 http://localhost:8090,否则浏览器将拒绝从一个到另一个的请求。
推荐:https://www.baeldung.com/spring-boot-angular-web
【讨论】:
@seyedaliziaei 酷。您面临的问题是什么?检查日志。可能是CORS问题。如果是 CORS,@CrossOrigin
将帮助解决。
@seyedaliziaei 你所说的全球是什么意思?你在找这个***.com/questions/37980914/…
请帮助我。 crossorigin 适用于端口 4200,但在构建 Angular 以在服务器中使用时不适用于端口 80
@seyedaliziaei 如果您使用默认的 Apache 80 端口,则 URL 将是 http://localhost
没有特定端口(因为 http 默认端口是 80)。在其他端口上配置 Apache。为了获得 Access-Control-Allow-Origin 权限,您需要一个有效的端口和 URL,如 http://domain:port/
来执行此操作。更多信息请参考digitalocean.com/community/questions/…以上是关于如何在apache中从角度调用spring boot api的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 应用程序中从 Api 网关(Zuul)调用外部服务(非 MSA)
在spring mvc中从ajax调用jasperreport时出现解析器错误
在 Spring Boot 应用程序中从 Angular JS 调用 Rest Services 时出错