post - 向 Asp.Net Core Web Api(版本 3.1)发送 POST 请求时,我从 POSTMAN 获得状态 500 代码
问题描述
我被 POSTMAN 和 Asp.Net Core Web Api 之间的 web api 测试困住了。
Web 应用程序可能仅在它可以从 URL 进行模型绑定时才响应。但是,每次它应该从 HTTP 请求正文进行模型绑定时,它都会响应状态 500 代码。
我的代码如下。
Web API 控制器代码:
[ApiController]
[Route("api/[controller]")]
public class OrderController : ControllerBase
{
private IOrderRepository _orderRepo;
public OrderController(IOrderRepository repo) // Dependency Injection
{
_orderRepo = repo;
}
[HttpGet]
public IEnumerable<Order> Get() => _orderRepo.Orders;
[HttpGet("{id}")]
public Order Get(int id) => _orderRepo[id];
[HttpPost]
public Order Post([FromBody] Order order) => _orderRepo.Add(order);
型号类代码:
public class Order
{
public int Id { get; set; } = 0;
public string ClientName { get; set; }
public string Menu { get; set; }
public int NoOfMenu { get; set; }
public Order(string clientName, string menuName, int noOfMenu)
{
ClientName = clientName;
Menu = menuName;
NoOfMenu = noOfMenu;
}
}
POST 操作方法的存储库代码:
// deleted for brevity
private Dictionary<int, Order> _orderlist = new Dictionary<int, Order>();
public Order Add(Order newOrder)
{
if(newOrder.Id == 0)
{
int key = _orderlist.Count;
while(_orderlist.ContainsKey(key)) key++;
newOrder.Id = key;
}
_orderlist[newOrder.Id] = newOrder;
return newOrder;
}
在 POSTMAN 中,获取请求成功。
有人可以帮助解决这种情况吗?
解决方案
我测试了您的代码并重现了您的问题。您可以添加无参数构造函数。
public class Order
{
public int Id { get; set; } = 0;
public string ClientName { get; set; }
public string Menu { get; set; }
public int NoOfMenu { get; set; }
public Order(string clientName, string menuName, int noOfMenu)
{
ClientName = clientName;
Menu = menuName;
NoOfMenu = noOfMenu;
}
public Order()
{
}
}
推荐阅读
- oop - 在源或包的顶层声明对象表达式的范围是什么?
- android - 如何立即从回收器适配器更新 Activity 中的数据?
- java - JFrame 复选框数据存储在一个变量中。如何将其输入到 mysql 查询中?
- angular - 模块“DynamicHtmlModule”导入的意外值“IonicModule”。请添加@NgModule 注释
- python - 使用正则化 (L1 / L2) Lasso 和 Ridge 的逻辑回归模型
- flutter - 一个简单的 Flutter 的 hello world 代码中的 LateInitializationError
- python - 环境属性不会传递给 Elastic Beanstalk 中的应用程序
- javascript - 到达 UI - 拦截菜单项选择上的点击事件?
- python - “对象”对象没有属性“my_tool”
- python - 如何组合两个列表,它会是一个句子