38834


Angular4にて下記を使用してWEB APIを実施しています。

this.http.get(url)  
[Angular4のHTTPでデータが取得できない](https://ja.stackoverflow.com/questions/38368/angular4%E3%81%AEhttp%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E5%8F%96%E5%BE%97%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)

上記ようなソースで、「InMemoryWebApiModule」を使わないようにしています。

実行すると下記のWEB APIが実行されており、

[code]

    Request URL:http://localhost:4200/app/XXXX
    
[/code]

ベースとなるRequest URLは「<http://localhost:4200/>」となっています。

環境の中をグレップしてみると、以下のような指定があったため、ポートなどを変えてみたのですが、  
「ng serve --open」で再度実施してもポートは変わりませんでした。

[code]

    protractor.conf.js
      baseUrl: 'http://localhost:4200/',
    
[/code]

また、以下でビルドを実施、Tomcat配下に配置すると、  
ng build --prod --aot=false --output-hashing=none --base-href=/Test/  
下記のWEB APIが実行されており、

[code]

    Request URL:http://localhost:8080/XXXX
    
[/code]

ベースとなるリクエストのURLは「<http://localhost:8080/>」となっています。

ただ、どこでこの定義がされているのかがわかりませんでした。


CC BY-SA 3.0
2017-10-18T00:47:36.337
38812
2017-10-18T07:50:35.890
12842
question
angular4
Angular4のベースとなるRequest URLはどこで定義されているのでしょうか


HttpModuleの内部では通信にXMLHttpRequestが使われています。  
`this.http.get('api/heroes')`のように相対パスが指定された場合、リクエスト先のURLはdocument.baseURI +
'api/heroes'のように解決されます。

Angularアプリがhttp://localhost:4200/に配置されていればリクエスト先はhttp://localhost:4200/api/heroesになります。  
[http://localhost:8080/Test/に配置されていればリクエスト先はhttp://localhost:8080/Test/api/heroesとなるわけです](http://localhost:8080/Test/%E3%81%AB%E9%85%8D%E7%BD%AE%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8C%E3%81%B0%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E5%85%88%E3%81%AFhttp://localhost:8080/Test/api/heroes%E3%81%A8%E3%81%AA%E3%82%8B%E3%82%8F%E3%81%91%E3%81%A7%E3%81%99)。

また、protractor.conf.jsはE2Eテスト用の設定のためng serveの動作には影響しません。  
ng serveのポートを変更したい場合は.angular-cli.jsonファイルに記述します。

[code]

      "defaults": {
        "styleExt": "css",
        "component": {},
        "serve": {"port": 8080}
      }
    
[/code]

のようにdefaultsの部分に記述します。  
.angular-cli.jsonについては[Angular CLI Config
Schema](https://github.com/angular/angular-cli/wiki/angular-cli)に説明があります。


CC BY-SA 3.0
2017-10-18T07:50:35.890
38834
2017-10-18T07:50:35.890
3655
38812
answer