Javascript Node.js Typescript如何将Request.payload分配给自定义接口
我在hapi.js框架中有一个node.js API。我想为用户输入负载创建接口。例如: 路线定义:Javascript Node.js Typescript如何将Request.payload分配给自定义接口,javascript,node.js,typescript,hapijs,Javascript,Node.js,Typescript,Hapijs,我在hapi.js框架中有一个node.js API。我想为用户输入负载创建接口。例如: 路线定义: { path: "/sample", method: "POST", handler: myHandler, options: { validate: { payload: { number1: joi.number().required(), string1:
{
path: "/sample",
method: "POST",
handler: myHandler,
options: {
validate: {
payload: {
number1: joi.number().required(),
string1: joi.string().required(),
number2: joi.number(),
}
}
}
}
处理程序:
interface SampleInput {
number1: number;
string1: string;
number2?: number;
}
const myHandler = async (request, h): Promise<string> => {
const input: SampleInput = request.payload;
// any works but really want to get rid of this
const _input: any = request.payload;
const input: SampleInput = _input;
// Service body
return "Hello World";
}
接口采样输入{
编号1:编号;
string1:string;
数字2?:数字;
}
constmyhandler=async(请求,h):Promise=>{
常量输入:SampleInput=request.payload;
//任何工作,但真的想摆脱这个
常量输入:any=request.payload;
常量输入:SampleInput=\u输入;
//服务机构
返回“你好世界”;
}
此代码总是显示一些错误,如Request.payload不能分配给Sample
。Request.payload
的类型是string | object | Buffer | internal.Readable
。我尝试使用类型guardconstinput:SampleInput=(request.payload)代码>但是仍然得到类似于{}的东西,它不可分配给Sample
如何定义类型并将有效负载直接分配给它?
类型断言不起作用,因为SampleInput
不仅仅是一些随机对象,而且object
基本上指定了一个对象,即没有特定键的非基本类型(请参阅)SampleInput
是对象的超集SampleInput
可以分配给对象
变量,但反之亦然
考虑到已知的有效负载
是SampleInput
,因为它是在运行时验证的,所以它应该是:
const input = <SampleInput>request.payload;
const input=request.payload;
因为request.payload
是string |对象| Buffer | internal.Readable,所以它可以被断言为SampleInput(可能需要像request.payload
那样的黑客操作)。
类型断言不起作用,因为SampleInput
不仅仅是一些随机对象,而object
基本上指定了一个对象,即没有特定键的非基本类型(请参阅)SampleInput
是对象的超集SampleInput
可以分配给对象
变量,但反之亦然
考虑到已知的有效负载
是SampleInput
,因为它是在运行时验证的,所以它应该是:
const input = <SampleInput>request.payload;
const input=request.payload;
由于request.payload
是string |object| Buffer | internal.Readable,因此它可以被断言为SampleInput(可能需要像request.payload
那样的hack)。嗨,语法是否等同于request.payload as SampleInput
,as
是较新的语法,通常更推荐,因为它不需要调整就可以与JSX兼容。您好,该语法是否等同于request.payload as SampleInput
?@ErnestJones是的,as
是较新的语法,通常更推荐,因为它不需要调整就可以与JSX兼容。