postman 如何在Web API 2.0 ApiController中嵌套无限循环

92dk7w1h  于 8个月前  发布在  Postman
关注(0)|答案(1)|浏览(94)

我在Get或Post方法BODY中找到Web API 2.0(请求和响应)的代码。有人能帮我解决这个问题吗?我想在Postman中基于Request Body来创建body JSON循环。
还没有连接到数据库,我只是想创建模板代码的 Postman 第一。
1.下面是APIcontroller =的代码

using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using ABC.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace ABC.Controllers
{
    public class Hitung6Controller : ApiController
    {
    [HttpPost]
        public HttpResponseMessage Post([FromBody]Hitung7Model minta1)
        {
            var req1 = minta1.DistributorCode;
            var hasil1 = new List<Hitung7Model>();
            var hasil2 = new List<Hitung8Model>();

            if (req1 != null)
            {
                hasil1.Add(new Hitung7Model()
                {
                    rowNested1 = hasil2
                    
                });

                hasil2.Add(new Hitung8Model()
                {
                });
            }
        return Request.CreateResponse(HttpStatusCode.OK, minta1);
        }

1.代码Models =

using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

namespace ABC.Models
{
    public class Hitung7Model
    {
        public string DistributorCode { get; set; }
        public List<Hitung8Model> rowNested1 { get; set; }
    }

    public class Hitung8Model
    {
        public string ProductCode2 { get; set; }
    }
}

1.我试着像这样输入Read Request many to many(ProductCode2),但返回仅1(ProductCode2):

在 Postman 我类型=

{
    "DistributorCode" : "Abc",
     "rowNested1": [
         {
          "ProductCode2" : "A1",
          "ProductCode2" : "A2"
         }
     ]
}

但是返回响应是这样的

{
    "DistributorCode": "Abc",
    "rowNested1": [
        {
            "ProductCode2": "A2"
        }
    ]
}

1.我尝试像这样读取请求体,但我在Postman中得到错误,APiController类中的错误也得到空引用。

另外,我想返回无限/无限循环(ProductCode2),例如我输入Read Request。在Postman Read请求中:

[ProductCode2 = "A1"] until [ProductCode2 = "A100"] 100 row ProductCode2.

我需要返回响应嵌套循环完全一样读请求。 Postman 回复:

[ProductCode2 = "A1"] loop until [ProductCode2 = "A100"] 100 row ProductCode2.

我输入Postman Read Request,得到错误和空引用。

{
    "DistributorCode": "Abcd",
    "rowNested1": [
        {
            "ProductCode2": "A1"
        }
    ]
    "rowNested1": [
        {
            "ProductCode2": "A2"
        }
    ]
     "rowNested1": [
        {
            "ProductCode2": "A3"
        }
    ]
}

我需要返回响应结构一样,读请求,嵌套循环无限(“ProductCode 2”):

{
    "DistributorCode": "Abcd",
    "rowNested1": [
        {
            "ProductCode2": "A1"
        }
    ]
    "rowNested1": [
        {
            "ProductCode2": "A2"
        }
    ]
     "rowNested1": [
        {
            "ProductCode2": "A3"
        }
    ]
}

请问有没有人可以帮我解决我的问题?

syqv5f0l

syqv5f0l1#

这里似乎有几个问题:
1.正确格式化请求正文。
1.从控制器中的请求中获取信息。
让我们首先处理请求体,您的模型显示您有一个Hitung7Model,它包含一个Hitung8Model对象列表作为一个名为rowNested1的字段。你会想要这样的东西:

{
    "DistributorCode" : "Abc",
    "rowNested1": [
        {
            "ProductCode2" : "A1"
        },
        {
            "ProductCode2" : "A2"
        }
    ]
}

现在对于控制器,您将有一个Hitung7Model的示例和一个Hitung8Model的列表。

[HttpPost]
public HttpResponseMessage Post([FromBody]Hitung7Model minta1)
{
    var req1 = minta1.DistributorCode;
    // I've left out hasil1 as it's the same as minta1
    var hasil2 = minta1.rowNested1; // This contains the list of Hitung8Model objects, if you want the string values extracted you can use the following line
    var productCode2s = minta1.rowNested1.Select(row => row.ProductCode2).ToList();

    return Request.CreateResponse(HttpStatusCode.OK, minta1);
}

此外,如果Hitung8Model只包含一个字符串值,可能根本不需要它,您可以在Hitung7Model上只包含一个字符串列表,因此如下所示:

public class Hitung7Model
{
    public string DistributorCode { get; set; }
    public List<string> ProductCodes { get; set; }
}

这意味着您可以使用以下请求体:

{
    "DistributorCode" : "Abc",
    "ProductCodes": [
        "A1",
        "A2"
    ]
}

并相应地简化控制器,即您不再需要Select(...)子句来获取产品代码,而可以使用var productCodes = minta1.ProductCodes;

相关问题