2014-11-14 8 views
5

में http स्थिति कोड कैसे बदलें I मैं निर्माण के http स्थिति कोड को संशोधित करने का प्रयास कर रहा हूं।स्ट्रॉन्ग्लूप लूपबैक

POST /api/users 
{ 
    "lastname": "wqe", 
    "firstname": "qwe", 
} 

रिटर्न 200 के बजाय 201

मैं त्रुटियों के लिए ऐसा ही कुछ कर सकते हैं:

var err = new Error(); 
err.statusCode = 406; 
return callback(err, info); 

लेकिन मैं नहीं मिल सकता है कैसे बनाने के लिए स्थिति कोड बदलने के लिए।

मैं बनाने के विधि पाया:

MySQL.prototype.create = function (model, data, callback) { 
    var fields = this.toFields(model, data); 
    var sql = 'INSERT INTO ' + this.tableEscaped(model); 
    if (fields) { 
    sql += ' SET ' + fields; 
    } else { 
    sql += ' VALUES()'; 
    } 
    this.query(sql, function (err, info) { 
    callback(err, info && info.insertId); 
    }); 
}; 
+0

मैं इसे भी समझने की कोशिश कर रहा हूं। अधिक व्यापक दस्तावेज अच्छा होगा :( – Jake

उत्तर

8

remoteMethod करने के लिए अपने कॉल में आप सीधे प्रतिक्रिया करने के लिए एक समारोह जोड़ सकते हैं। यह rest.after विकल्प के साथ पूरा किया है:

function responseStatus(status) { 
    return function(context, callback) { 
    var result = context.result; 
    if(testResult(result)) { // testResult is some method for checking that you have the correct return data 
     context.res.statusCode = status; 
    } 
    return callback(); 
    } 
} 

MyModel.remoteMethod('create', { 
    description: 'Create a new object and persist it into the data source', 
    accepts: {arg: 'data', type: 'object', description: 'Model instance data', http: {source: 'body'}}, 
    returns: {arg: 'data', type: mname, root: true}, 
    http: {verb: 'post', path: '/'}, 
    rest: {after: responseStatus(201) } 
}); 

नोट: ऐसा लगता है कि strongloop एक 204 "कोई सामग्री" के लिए बाध्य करेगा अगर context.result मूल्य falsey है। इसके आस-पास पहुंचने के लिए मैं बस वांछित स्थिति कोड के साथ एक खाली वस्तु {} वापस भेजता हूं।

+0

धन्यवाद! यह काम करता है! लेकिन अब मैं http://sailsjs.org/#/ का उपयोग करता हूं, और अधिक लचीला। – enguerran

1

आप http पैरामीटर में दूरस्थ विधि के लिए डिफ़ॉल्ट सफलता प्रतिक्रिया कोड निर्दिष्ट कर सकते हैं।

MyModel.remoteMethod(
    'create', 
    { 
    http: {path: '/', verb: 'post', status: 201}, 
    ... 
    } 
); 
संबंधित मुद्दे