Функция Javascript Azure со средой выполнения бета-версии не возвращает тело ответа для HTTP-ответов об ошибке

С функциями Javascript Azure в среде выполнения бета-версии я столкнулся с проблемой, когда, если функция возвращает успешный ответ (200, 201), тело ответа, возвращаемое из context.res, возвращается правильно.

Но если для статуса HTTP установлено значение 400 или 404, клиент получает стандартный ответ, например «Плохой запрос», в теле ответа независимо от того, какое тело ответа установлено в функции.

Я могу воспроизвести это даже в автоматически созданной функции сценария Java.

Код (стандартный автоматически сгенерированный код)

module.exports = function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.name || (req.body && req.body.name)) {
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request 
body"
        };
    }
    context.done();
};

В среде выполнения v1, если имя не указано в запросе или теле запроса, статус HTTP устанавливается на 400 и тело ответа правильно содержит «Пожалуйста, передайте имя в строке запроса или в теле запроса».

В среде выполнения бета-версии для статуса HTTP установлено значение 400, но в теле ответа просто содержится «неверный запрос».

Нужно ли возвращать тело ответа другим способом для бета-версии?


person Prashant Ambardekar    schedule 14.07.2018    source источник


Ответы (1)


Код в порядке, это известная проблема для бета-версии.

См. Объявление о среде выполнения функций Azure 2.0.11888.

HttpTrigger неправильно возвращает содержимое ответа. Например, следующий код вернет неверный запрос вместо Пожалуйста, передайте имя в строке запроса или в теле запроса: return new BadRequestObjectResult("Please pass a name on the query string or in the request body");

Если это блокировщик, вы можете использовать предыдущую версию, установив для FUNCTIONS_EXTENSION_VERSION значение 2.0.11857-alpha (в настройках приложения).

Обновить

Эта проблема уже исправлена ​​в 2.0.11933 .

person Jerry Liu    schedule 14.07.2018
comment
Спасибо! Это очень полезно. - person Prashant Ambardekar; 15.07.2018
comment
@PrashantAmbardekar Вы можете принять это как ответ, чтобы закрыть свой вопрос. - person Jerry Liu; 15.07.2018