在Angular 8中,你可以使用HttpClientModule
来进行HTTP请求和订阅可观察对象。在Heroku上,你可以通过设置响应的Content-Type
标头为text/html
来返回HTML。
下面是一个示例代码,演示了如何在Heroku上返回HTML而不是JSON,但在本地运行时不是这样:
HttpClientModule
。import { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [
HttpClientModule
],
...
})
export class AppModule { }
HttpClient
发送HTTP请求,并设置响应的Content-Type
标头为text/html
。在本地运行时,你可以继续使用默认的application/json
。import { HttpClient, HttpHeaders } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class DataService {
private apiUrl = 'https://your-heroku-app-url/api/data';
constructor(private http: HttpClient) { }
getData(): Observable {
// 设置响应的Content-Type标头为text/html
const headers = new HttpHeaders().set('Content-Type', 'text/html');
return this.http.get(this.apiUrl, { headers });
}
}
getData()
方法返回的可观察对象,并处理返回的HTML数据。import { Component, OnInit } from '@angular/core';
import { DataService } from './data.service';
@Component({
...
})
export class AppComponent implements OnInit {
data: any;
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getData().subscribe(
response => {
this.data = response;
console.log(this.data); // 处理返回的HTML数据
},
error => {
console.error(error);
}
);
}
}
请注意,上述示例中的https://your-heroku-app-url/api/data
是一个示意URL,你需要将其替换为你在Heroku上部署的实际API的URL。
希望这可以帮助你解决问题!