首页 > 解决方案 > 编辑 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”样式方法执行。

感谢任何人都可以提供的任何帮助!

标签: http.net-core

解决方案


您似乎将您的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 可以为空或添加其他属性。


推荐阅读