Пользовательские коды ошибок с использованием сопоставления с образцом не работают
В моем проекте я использую без сервера. Я пытаюсь изменить статус-коды по умолчанию и ответ. Я попробовал следующее.
dashboard:
handler: src/common/dashboard.dashboard
role: CommonServicesFullAccessRole
timeout: 30
events:
- http:
integration: lambda
path: ui/dashboard/
method: get
request:
parameters:
paths:
id: true
response:
headers:
Content-Type: "'text/html'"
template: $input.path('$')
statusCodes:
400:
pattern: '[\s\S]*Bad Request[\s\S]*'
template: $input.path('$.errorMessage')
headers:
Content-Type: "'text/plain'"
В моей лямбде я возвращаю сообщение об ошибке как
return callback('Bad Request');
Тем не менее, я не могу получить ответ с указанным statusCode. Я не уверен, где точная ошибка. Ниже приводится ответ, который я получаю.
Пожалуйста, помогите мне решить это. Спасибо...
1 ответ
Попробуйте ниже.
# Instead of "return callback('Bad Request');"
callback(new Error('Bad Request'));
Хотя я не Node
пользователь, я видел эти примеры кодов с помощью Error
объект в Node
,
За Python
Я проверю это, если работает ваш serverless
конфиг на response
блок.
raise Exception('Bad Request') # in case of Python
--Редактировать--
Я не думаю, что мой serverless.yml
есть разница с твоей, так как я только что скопировал твою часть.
Однако я прилагаю свой тестовый код, надеясь, что он поможет вам.
# serverless.yml
service: "lambda"
provider:
name: aws
runtime: nodejs6.10
region: ap-northeast-2
stage: test
package:
exclude:
- "*/**"
include:
- "handler.js"
functions:
api-test:
handler: handler.functionOne
events:
- http:
method: get
path: fire
integration: lambda
response:
headers:
Content-Type: "'text/html'"
template: $input.path('$')
statusCodes:
400:
pattern: '[\s\S]*Bad Request[\s\S]*'
template: $input.path('$.errorMessage')
headers:
Content-Type: "'text/plain'"
# handler.js
module.exports.functionOne = function(event, context, callback) {
callback(new Error('Bad Request'));
}
# завиток
$ curl -X GET https://xxxxxxxx.execute-api.ap-northeast-2.amazonaws.com/test/fire -v
.
.
.
< HTTP/2 400
< content-type: text/plain
< content-length: 11
< date: Mon, 15 Oct 2018 12:40:34 GMT
.
.
.
Bad Request