我学习了Angular,并且我在Google App Engine上有了这个Angular 8客户端应用程序。 我在日志中收到此错误
找不到处理程序引用的静态文件: dist / api / BooksXml / title / ruby
api/BooksXml
是我在Angular服务中的Crud溃败,如下所示:
private BookItemsUrl = 'api/BooksXml'; // URL to web api
/title
是像这样的Crud限定词
/** GET book by title from server. */
getBookByTitle(title: string): Observable<BookItem[]> {
const url = `${this.BookItemsUrl}/title/${title}`;
return this.http.get<BookItem[]>(url);
}
/ruby
是我要搜索的书的名称。
后端是ASP.NET Core。这一切都可以在localhost上运行,但在App引擎上会出现此错误
答案 0 :(得分:1)
Angular认为您的api/BooksXml/title/ruby
是静态文件。有两种解决方案可调用您的后端:使用代理或使用后端URL更改BookItemsUrl
。
更改BookItemsUrl
URL
如果您未启用CORS,则此解决方案可能无法正常工作。
private BookItemsUrl = 'http://<server_name>:<port_number>/api/BooksXml'
OR
使用代理
如果您不了解代理,请检查Angular documentation。
src/proxy.config.json
:{
"/api": {
"target": "http://<server_name>:<port_number>",
"secure": false
}
}
angular.json
中添加proxyConfig
选项:...
"architect": {
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "your-application-name:build",
"proxyConfig": "src/proxy.conf.json"
},
...
请注意,如果您编辑代理配置文件,则必须重新启动 ng服务过程,使您的更改生效。