Yapacağını düşünüyorum. Cevabım, clay's yanıtından yoğun bir şekilde ödünç alınmış/ilham almış/alınmıştır. Ve sadece davamda kullandığım tüm detayları ekliyorum. Tekrar teşekkür ederim kil!
İlk burada API yapılandırılmıştır açıklanmıştır:
/api/schoolm
çocuk API'leri yönlendirilir ana api
Ve orada taleplerden
geçerli: Toplu opertaions desteklemek için Şimdi
/api/schoolm/students/
/api/schoolm/teachers/
/api/schoolm/subjects/
...
, ben Tüm parti işlemlerini yürütmekten sorumlu olacak başka bir API ekledi./api/schoolm/batch
de
{
"batchReq":[
{
"id":"1",
"uri": "/api/schoolm/students/",
"httpMethod": "GET"
},
{
"id":"2",
"uri": "/api/schoolm/teachers/",
"httpMethod": "GET"
}
]
}
kontrol talebi (iş mantığına) onaylar ve geri referans numarası ile yanıt verir: gibi
/api/schoolm/batch/
tipik bir kesikli isteği olmazdı.
var async = require('async');
var httpMocks = require('node-mocks-http');
var shortid = require('shortid');
exports.processBatch = function(batchRequests, callback){
var batchRes = {};
var result = {};
var batchID = shortid.generate();
result.batchID = batchID;
async.setImmediate(function() {
async.eachSeries(batchRequests, function(batchReq, callback){
var mockRes = httpMocks.createResponse({
eventEmitter: require('events').EventEmitter
});
var reqDetails = _processSubRequest(batchReq);
_fetchResponse(reqDetails, mockRes);
mockRes.on('end',function(){
result[batchReq.id] = mockRes._getData();
callback(null);
});
},function(err){
console.log(result);
});
});
callback("Your batch request has been accepted. Request ID - "+batchID);
}
function _processSubRequest(batchReq){
var retValue = {};
var request = {};
var uriComp = batchReq.uri.split('/');
retValue.controller = uriComp[3];
request.method = batchReq.httpMethod;
request.url = batchReq.uri;
request.body = batchReq.body || {};
request.params = batchReq.params || {};
if(batchReq.httpMethod == 'GET'){
if(uriComp.length > 5){
request.params.id = uriComp[4];
}
}else if(batchReq.httpMethod == 'POST'){
}else{
}
retValue.request = request;
return retValue;
}
function _fetchResponse(reqDetails, mockRes){
var mockReq = httpMocks.createRequest(reqDetails.request);
// proceed to fetch answer from respective controller methods.
.......................
}
function _prepResponse(result, err, res){
var data = {};
if(err) {
data["error"] = err;
data["response"] = null;
return data;
}else{
data["error"] = null;
data["response"] = result;
return data;
}
}
toplu işlem tamamlandıktan sonra
, canlı bildirimin parçası olarak kullanıcıya gönderilen veya sonradan gelen okunacak DB saklanabilir. Toplu isteği için
GraphQL
üzerine
1 isteği olan motivasyonu birden isteği ayrılabilir ne? – AJS
Bu bir istek değil - farklı API'lar için kullanılan farklı türlerdir. Bir isteğiyle kulüplere girmek, kodun müşteri tarafımdan yapmak istediğim aramaların sayısını azaltmaktır. – swateek
Yaklaşımınızın doğru olmayabileceğine inanıyorum, eğer düğüm beklediğiniz taleplerin üstesinden gelemezse endişeleniyor musunuz ?, tek bir düğüm noktası, çoğu yükü işleme yeteneğinden daha fazla olduğundan, eğer ölçeklendirilemiyorsa Nodda da çok kolay olan kümeler – AJS