0
私は応答にヘッダーを設定エクスプレス/ NodeJS REST APIを構築しました:Express/Node Repsonseヘッダーが失われましたか?
router.route("/api/articles")
.get(authCheck, function (req, res) {
let pagination = req.get('Pagination').split(",");
let currentPage = pagination[0];
let currentPageSize = pagination[1];
let skip = (currentPage - 1) * currentPageSize;
var response = {};
articlesOp.count({}, function (err, totalItems) {
articlesOp.find({}, function (err, data) { response = data; }, {
sort: {
artNr: 1
}
}).skip(skip > 0 ? ((currentPage - 1) * currentPageSize) : 0).limit(currentPageSize).exec(function (err, docs) {
if (err)
res.json(err);
else {
res.setHeader('Pagination', '{"page": ' + currentPage + ', "pageSize": ' + currentPageSize + ', "totalItems": ' + totalItems + ', "totalPages": ' + Math.ceil(totalItems/currentPageSize) + '}');
res.setHeader('X-Foo', 'bar');
res.json(response);
}
});
});
});
ポストマンでthsi APIを実行すると、私はfloowingヘッダが設定されていることウンターヘッダーセクションを参照してくださいすることができます
Access-Control-Allow-Origin →*
Connection →keep-alive
Content-Length →3697
Content-Type →application/json; charset=utf-8
Date →Sat, 18 Feb 2017 10:05:10 GMT
ETag →W/"e71-NQjTx6uFpe8cuvaoLUXPOg"
Pagination →{"page": 3, "pageSize": 10, "totalItems": 442, "totalPages": 45}
X-Foo →bar
X-Powered-By →Express
私のAngular2アプリケーションからコードを実行すると、 "Content-Type"以外のヘッダーは存在しません。
res.setHeader("access-control-expose-headers", "Pagination");
:
let headers = new Headers();
if (page != null && itemsPerPage != null) {
headers.append('Pagination', page + ',' + itemsPerPage);
}
return this.authHttp.get(this._baseUrl + 'articles', {
headers: headers
})
.map((res: Response) => {
console.log(res.headers.keys());
pResult.result = res.json();
if (res.headers.get("Pagination") != null) {
//var pagination = JSON.parse(res.headers.get("Pagination"));
var paginationHeader: Pagination = this.itemsService.getSerialized<Pagination>(JSON.parse(res.headers.get("Pagination")));
console.log(paginationHeader);
pResult.pagination = paginationHeader;
}
return pResult;
})
.catch(this.handleError);