我的任务是构建一个API,作为一个请求,它将使用一个产品编号,该产品编号将具有数量和大小,邮政编码,运输方式。
客户有一个购物车,在该购物车中是产品编号,数量和大小 所以基本上他会发送一个如下所示的json请求
myarray[x,y]
是否可以在我正在制作的.net核心rest webapi上接收HTTP json请求。
如果是这样,那么发送json这样的路由会是什么样?如果他们必须将整个json放在url中,那将会很长吗?
编辑: 经过更多研究后,我发现我可以在正文中接收到带有JSON的POST请求,从那里我应该能够读取该json,对其进行处理,然后再返回json吗?我说得对吗?
答案 0 :(得分:1)
进行更多研究后,我发现我可以在体内收到带有JSON的POST请求,从那里我应该能够读取该json,对其进行一些处理,然后再将json返回正确吗?我说得对吗?
是的。你是对的。例如,以下控制器动作将接受来自您问题的JSON的POST正文,并以相同的JSON进行响应。
public class Product
{
public string Sku { get; set; }
public string Size { get; set; }
public int Quantity { get; set; }
}
public class Cart
{
public List<Product> Product { get; set; }
public string ShipToZip { get; set; }
public string ShipMethod { get; set; }
}
public class CartBody
{
public Cart Cart { get; set; }
}
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// POST api/values
[HttpPost]
public ActionResult<CartBody> Post(CartBody cartBody)
{
return cartBody;
}
}
答案 1 :(得分:1)
我想我看起来不够努力:(
无论如何,我觉得问题越多,就会遇到一些新手问题。
How to receive json in ASP.NET web api?
我从那里得到了解决方案,
我要做的就是创建一个类似于下面的“ Model”类,该类与要发送的确切JSON格式匹配,不需要反序列化
public class RequestModel
{
public ShoppingCart RequestShoppingCart { get; set; }
}
public class ShoppingCart
{
public Products[] Products { get; set; }
public int ShipToZip { get; set; }
public string ShipMethod { get; set; }
}
public class Products
{
public string Sku { get; set; }
public string Size { get; set; }
public int Quantity { get; set; }
}
然后从那里在我的API控制器中,我可以执行以下操作以查看其工作
[Produces("application/json")]
[Route("api/ShippingCalculator")]
public class ShippingCalculatorController : Controller
{
// POST: api/ShippingCalculator
[HttpPost]
public string Post([FromBody]RequestModel jsonRequest)
{
// Debug.WriteLine(jsonRequest.RequestShoppingCart.Products);
return jsonRequest.RequestShoppingCart.ShipMethod;
}
}