Angular 6 调用 localhost API

Posted

技术标签:

【中文标题】Angular 6 调用 localhost API【英文标题】:Angular 6 call localhost API 【发布时间】:2018-09-26 07:31:37 【问题描述】:

我试图在我的 Angular 6 应用程序中本地调用一个 api,api url 是 http://localhost/myapi 我添加了一个指向这个 url 的代理配置文件,但我得到了 404 运行我的应用程序时出错。

我的 proxy.config.json 文件:


  "/api/*":
    "target":"http://localhost/myapi",
    "secure": false,
    "logLevel": "debug"
  

package.json 文件:

"serve-dev": "ng serve --source-map=false --proxy-config proxy.config.json",

http.service.ts 文件:

export class HttpService
     static serverApiUrl : string  = "/api/"

auth.service.ts 文件:

 this.http.get(HttpService.serverApiUrl+"site/check-auth")
            .map(response => 
                if(response['auth'] == 1) 
          return true;
                 else 
          this.router.navigate(['/auth'])
                    return false;
                
            );

在控制台中我得到了这个:

http://localhost:4200/api/site/check-auth 

任何建议。

【问题讨论】:

你是ng serve还是npm start npm run serve-dev 应用构建但请求返回 404 错误 真正的api url是localhost/myapi/site/check-auth 【参考方案1】:

看起来你需要rewrite the URL path,使用类似这样的东西:


    "/api": 
        "target": "http://localhost",
        "secure": false,
        "logLevel": "debug",
        "pathRewrite": 
            "^/api": "/myapi"
        
    

我已经从您的前缀中删除了/*,并添加了一个pathRewrite 部分。我相信您之前尝试代理到localhost/myapi/api/site/check-auth(带有额外的/api),应该用pathRewrite 部分剥离。

【讨论】:

以上是关于Angular 6 调用 localhost API的主要内容,如果未能解决你的问题,请参考以下文章

Angular 6 和 Spring boot - 无法使用简单的 HttpClient 调用获取数据

Angular 6 + Spring Boot:错误:“来自原点 'http://localhost:4200' 已被 CORS 策略阻止”

如何从 angular localhost:4200 调用 spring security azure AD localhost:8080。天蓝色调用中的错误

Angular2应用调用node.js函数

Angular2,REST 服务 POST 调用错误:“跨源请求被阻止”

Angular 6 中没有“Access-Control-Allow-Origin”标头