Angular 2 HTTP GET到节点后端以获取目录中的文件名列表
Angular 2 HTTP GET to Node backend for list of file names in directory
我正试图使用Angular 2 HTTP GET请求来简单地连接Node/Express后端,后者使用fs.readdr方法以某个文件夹中的文件名列表作为响应。
我将Angular 2请求设置为服务:
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import './rxjs-operators';
@Injectable()
export class PhotoService {
constructor (private http: Http) {}
private photosUrl = '/api/photos'; // URL to web API
getPhotos() : Observable<string[]> {
return this.http.get(this.photosUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
private handleError (error: any) {
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // log to console instead
return Observable.throw(errMsg);
}
}
然后从一个组件调用此服务:
ngOnInit() {
this.photoService.getPhotos()
.subscribe(
photos => this.fileList = photos,
error => this.errorMessage = <any>error);
}
这是节点后端(根据惯例设置Express(:
//Photo Service
app.get('/api/photos', function(req, res) {
fs.readdir('./uploads', function(error, files) {
if (error) {
throw error;
}
else {
res.end(files);
}
});
});
如图所示,HTTP请求调用GET方法http://localhost:3000/api/photosNode后端应该接收该请求并发回一组字符串,这些字符串具有"uploads"文件夹中的文件名。
然而,它似乎不起作用。我想我对Nodeneneneba API发送响应的格式以及它如何与Angular在服务中使用的Observable类型一起工作感到困惑。
您的Angular 2代码在我看来不错。但在Node后端,您不应该使用res.end()
发送数据(请参阅文档(。正确的是res.send(files);
,或者在您的情况下是res.json(files);
,它也将设置正确的Content-Type
标头。
相关文章:
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- TableExport jquery插件:文件名和扩展名问题
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 接受不在列表中的值-引导组合框
- 禁用jQuery中的下拉列表
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 如何在javascript中迭代数字列表
- 从远程服务器目录获取文件名列表
- 获取已在 DOM 中加载的文件名列表
- 在PHP中将一个文件名列表转换为文件树
- 是否有一种方法可以只使用Javascript从文件夹返回所有图像文件名的列表?
- Angular 2 HTTP GET到节点后端以获取目录中的文件名列表