TypeScript Azure 函数将 POST 方法的主体读取为 JSON
TypeScript Azure Function Read Body of POST method as JSON
我有带有 Http 触发器的 TypeScript azure 函数。我正在使用 POST 方法并将正文发送到 azure 函数。
但我无法阅读,请求正文数据作为 Javascript 对象。
我的函数代码
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
if (name) {
context.res = {
// status: 200, /* Defaults to 200 */
body: "Ar Item search " + (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"
};
}
};
export default httpTrigger;
邮递员请求
调试数据
因为上面的图片正文不是正常的 http post 请求正文中的 Json 对象。它是一个字符串
name=Janith&age=25
I can not read req.body.name
as sample code.
I need it to read as
{
"name":"Janith",
"age":25
}
我的function.json
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"scriptFile": "../dist/ARItemSearch/index.js"
}
我认为您只需要直接使用 req.body 并在存储之前根据您的架构进行验证,
const {error, schema} = await validate(User, req.body);
另外我在 POSTMAN 上注意到一件事,你需要使用 raw 并将其作为 JSON 对象发送,而不是作为请求参数发送。
您需要在邮递员的 body
选项卡中使用 raw
选项,然后按如下方式传递 json -
{
"name":"Janith",
"age":25
}
然后您将能够在您的函数中使用 req.body
检索 json 对象。
有关如何使用邮递员将原始 json 传递到请求中的更多信息,请参阅此 doc。
我有带有 Http 触发器的 TypeScript azure 函数。我正在使用 POST 方法并将正文发送到 azure 函数。 但我无法阅读,请求正文数据作为 Javascript 对象。
我的函数代码
import { AzureFunction, Context, HttpRequest } from "@azure/functions"
const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
context.log('HTTP trigger function processed a request.');
const name = (req.query.name || (req.body && req.body.name));
if (name) {
context.res = {
// status: 200, /* Defaults to 200 */
body: "Ar Item search " + (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"
};
}
};
export default httpTrigger;
邮递员请求
调试数据
因为上面的图片正文不是正常的 http post 请求正文中的 Json 对象。它是一个字符串
name=Janith&age=25 I can not read
req.body.name
as sample code. I need it to read as
{
"name":"Janith",
"age":25
}
我的function.json
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
}
],
"scriptFile": "../dist/ARItemSearch/index.js"
}
我认为您只需要直接使用 req.body 并在存储之前根据您的架构进行验证,
const {error, schema} = await validate(User, req.body);
另外我在 POSTMAN 上注意到一件事,你需要使用 raw 并将其作为 JSON 对象发送,而不是作为请求参数发送。
您需要在邮递员的 body
选项卡中使用 raw
选项,然后按如下方式传递 json -
{
"name":"Janith",
"age":25
}
然后您将能够在您的函数中使用 req.body
检索 json 对象。
有关如何使用邮递员将原始 json 传递到请求中的更多信息,请参阅此 doc。