2015-03-20 2 views
5

Я ищу способ настройки кода ответа и заголовков HTTP-кода StrongLoop LoopBack.StrongLoop Loopback: как настроить код ответа HTTP и заголовок

Я хотел бы привести некоторые бизнес-правила компании в отношении REST API.

Типичный случай для модели, описанной в JSON, для того, чтобы HTTP отвечал на запрос POST с кодом 201 + header Content-Location (вместо кода ответа по умолчанию loopback 200 без заголовка Content-Location).

Возможно ли это используя LoopBack?

+0

Так .. Я думаю, вы можете сделать это с помощью [промежуточного программного обеспечения] (docs.strongloop.com/display/public/LB/Defining+middleware), но у меня возникли проблемы с подготовкой примера. Хотя я буду продолжать пытаться. – jakerella

ответ

4

К сожалению, способ сделать это немного сложно, потому что LoopBack не имеет крючков для изменения всех ответов, выходящих из API. Вместо этого, вам нужно будет добавить код для каждой модели в загрузочный скрипт, который перехватывает при помощи метода afterRemote:

Внутри /server/boot/ добавить файл (название не важно):

module.exports = function(app) { 

    function modifyResponse(ctx, model, next) { 
    var status = ctx.res.statusCode; 
    if (status && status === 200) { 
     status = 201; 
    } 
    ctx.res.set('Content-Location', 'the internet'); 
    ctx.res.status(status).end(); 
    } 

    app.models.ModelOne.afterRemote('**', modifyResponse); 
    app.models.ModelTwo.afterRemote('**', modifyResponse); 
}; 
+1

Спасибо jakerella, он работает очень хорошо и соответствует моим потребностям! Я применяю его ко всем моим моделям приложений, например: 'for (var model in app.models) app.models [model] .afterRemote ('**', modifyResponse);' – Nicolas

+1

Чтобы сделать что-то для всех моделей, кажется, что вы можете пойдите следующим образом: http://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Formattingremotemethodresponses – neemzy

+2

'ctx.res.status (status) .end();' не является хорошей практикой, вы должны вызовите 'next()' и продолжим цепочку remoteMethod. –

Смежные вопросы