我的 azure 函数接受 HTTP 请求并生成一条发布到服务总线主题的消息。它正在工作,但消息正文将返回到 http 请求者。
我想要的是 httpRequest 获得带有空正文的 200 响应,并且服务总线主题消息包含响应。我似乎无法将它们分开。
我认为线索在于函数选项对象返回属性(参考:MS),但我似乎无法让它工作。
export async function ediReprocessEvent(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`ediReprocessEvent function processed request for url "${request.url}"`);
try {
let body = await request.json() as IReprocessRequest;
let result = await ediDocEvent(body, context);
return {
status: 200,
body: result,
};
} catch (err:any) {
return {
status: 500,
body: err.message,
};
}
}
app.http('ediReprocessEvent', {
methods: ['POST'],
authLevel: 'anonymous',
handler: ediReprocessEvent,
return: output.serviceBusTopic({
topicName: 'MyTopic',
connection: 'MyConnection',
}),
});
有时,所需要的只是睡个好觉。
以下结果会向调用者返回 204 并将消息发布到主题。
export async function ediReprocessEvent(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`ediReprocessEvent function processed request for url "${request.url}"`);
try {
let body = await request.json() as IReprocessRequest;
let result = await ediDocEvent(body, context);
context.extraOutputs.set(topicOutput, result)
return;
} catch (err:any) {
return {
status: 500,
body: err.message,
};
}
}
const topicOutput = output.serviceBusTopic({
topicName: 'normalised-edi-document-prod',
connection: 'UFProd_SERVICEBUSTOPIC',
});
app.http('ediReprocessEvent', {
methods: ['POST'],
authLevel: 'anonymous',
handler: ediReprocessEvent,
extraOutputs: [topicOutput]
});