我被困在最后,在 Get 或 Post 方法正文中找到 Web Api 2.0(请求和响应)的代码。 有人可以帮我解决这个问题吗? 我想在Postman中基于Request Body制作Body Json循环。
尚未连接到数据库,我只想先为 Postman 创建模板代码。
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);
}
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; }
}
}
我尝试像这样输入多对多读取请求(ProductCode2), 但只返回 1 (ProductCode2)
在邮递员中我输入=
{
"DistributorCode" : "Abc",
"rowNested1": [
{
"ProductCode2" : "A1",
"ProductCode2" : "A2"
}
]
}
但是返回响应是这样的=
{
"DistributorCode": "Abc",
"rowNested1": [
{
"ProductCode2": "A2"
}
]
}
我尝试像这样读取请求正文,但我在 Postman 中收到错误,在 APiController 类中收到错误 也得到空引用。
我还想返回无限/无限循环(ProductCode2),例如我输入“Read Request”。 在邮递员读取请求中: [ProductCode2 = "A1"] 直到 [ProductCode2 = "A100"] 100 行 ProductCode2。 我需要返回响应嵌套循环与读取请求完全相同。 在邮递员返回响应中: [ProductCode2 = "A1"] 循环直到 [ProductCode2 = "A100"] 100 行 ProductCode2。
我输入邮递员读取请求,得到错误和空引用。
{
"DistributorCode": "Abcd",
"rowNested1": [
{
"ProductCode2": "A1"
}
]
"rowNested1": [
{
"ProductCode2": "A2"
}
]
"rowNested1": [
{
"ProductCode2": "A3"
}
]
}
我需要返回与读取请求相同的响应结构,无限嵌套循环(“ProductCode2”)。
{
"DistributorCode": "Abcd",
"rowNested1": [
{
"ProductCode2": "A1"
}
]
"rowNested1": [
{
"ProductCode2": "A2"
}
]
"rowNested1": [
{
"ProductCode2": "A3"
}
]
}
请有人尝试帮助我解决我的问题, 谢谢大家的帮助。
看起来这里有几个问题:
让我们首先处理请求正文,您的模型显示您有一个
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;
。