http - 编辑 HTTP POST 方法以根据 .NET Core 中的现有数据发布不同的数据
问题描述
我正在为一个只能(目前)只能通过 Postman 发出 POST 和 GET 请求的游戏创建一个 API。它需要能够接收 POST 请求并根据之前的请求更新 InMemory 数据库。播放器状态不是问题——它只需要允许播放器发出请求并根据先前请求的值更新值。
我有一个包含类变量的模型,并自动将其中一个变量设置为 PlayerScore 值(最初为 0)。
public class Game
{
public long Id { get; set; }
public long PlayerScore { get; set; }
public bool Roll { get; set; }
public bool IsComplete { get; set; }
public Game()
{
this.PlayerScore = 0;
}
}
每次玩游戏/提交 HTTP POST 请求时,这都会将分数设置为 0,但我希望能够根据游戏中的先前回合编辑此值。
我应该把这个方法放在哪里?
POST 通过“ActionResult”样式方法执行。
感谢任何人都可以提供的任何帮助!
解决方案
您似乎将您的Game
课程用于您的内部游戏状态以及来自 POST 请求的模型。
我建议为您的 POST 请求创建一个单独的类,以免他们感到困惑。例如
public class GameUpdateRequest
{
public long Id { get; set; }
public long PlayerScore { get; set; }
public bool Roll { get; set; }
public bool IsComplete { get; set; }
}
// .. controller action
[HttpPost]
public IActionResult UpdateGame([FromBody] GameUpdateRequest request)
{
if (request.PlayerScore > 0)
// update game state logic
}
然后你的请求模型可以改变并且不依赖于游戏状态模型。您可以在请求中使 PlayerScore 可以为空或添加其他属性。
推荐阅读
- websocket - Mqtt 连接为 aws IOT 预签名 URL 提供 403
- python - Pandas - 检查值是否在列中,如果没有则重新询问输入
- vba - Excel VBA在复制后将复选框链接到正确的单元格
- excel - 如何对每个类别求和
- json - 是否有适用于 mac 的应用程序从表创建 JSON 并添加数据类型?
- opengl - Qt3D 渲染 32 位颜色而不是 24 位
- c# - 仅当另一个任务成功完成时才运行一个任务
- sql - SQL Server - 用于转换/转换列的动态 SQL 存储过程
- algorithm - 大量图的寻路算法
- asp.net - 如何在 Linux 服务器中使用带有 Apache2 的 Aspx 页面?