繁体   English   中英

在 http.get 中将嵌套对象作为参数发送

[英]Sending nested objects as a parameter in http.get

我正在尝试将一个嵌套对象从我的前端发送到后端。
我的课程是:

interface ParamsUri {
    iD: number,
    from: string,
    to: string,
    nestedClass: string[]
}

interface Params {
    iD: number,
    from: string,
    to: string,
    nestedClass: NestedClass[]
}

class NestedClass{
    name: string;
    value: string;
}

我的 http.get 命令是:

this.http.Get<SomeClass[]>(`api/dashboardfilter`, this.GetParams(paramsUri))

虽然 GetParms 是:

private GetParams(params: Parmas): ParamsUri{
        return {
            id: 1,
            from: "temp",
            to: "temp",
            nestedClass: params.nestedClass.map(x => stringify(x))
        }
    }

当 console.log(this.GetParams(params).nestedClass, 我看到我所期望的,即 name=XXX&value=YY (数组的一个单元格)。但是,当我发送请求并按照查询进行操作时,我看到'=' 和 '&' 值由 get 函数编码,查询字符串不再对后端可读(或者至少这是我对为什么我为这些值获取空值的假设)。我也可以确认一切其他然后嵌套类由后端接收。我尝试了其他方法来字符串化我的参数(如简单映射和连接)但没有运气。

我错过了什么? 我到处寻找相同的答案字符串化您的嵌套对象,但是,这似乎不起作用,因为 get 函数正在对字符串化字符串进行编码。

当您向后端发送数据时,是否有任何理由不使用 POST 请求? 通常,您只想使用 GET 请求从后端获取数据,并使用 POST 请求将数据发送回后端。

this.http.Post<SomeClass[]>(`api/dashboardfilter`, YourObject)

只需将对象传递给发布请求,它就会包含在发布请求的正文中。

您可能还需要在后端指定对象结构,具体取决于您的框架。

编辑:看到你标记了 C#,所以我假设你使用的是 .netcore 或类似的。 在您的控制器文件中,指定请求是一个发布请求,并且它在正文中包含您的对象。

    [HttpPost]
    public IActionResult YourAction([FromBody] YourObject)
    {
        return Ok(SomeService.SomeFunction(YourObject));
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM