Category Hierarchy

我刚刚开始学习.NET Web API编程,对于经验丰富的.NET开发人员,我有一个问题--将对象引用传递到Create端点的“正确”方法是什么?

我有以下模型:

public class Task
{
    public int ID { get; set; }
    public string Title { get; set; }
    public virtual User User { get; set; }
}

public class User
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

和我的控制器端点来创建Task

[HttpPost]
public async Task<IActionResult> PostTask([FromBody] Models.Task task)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    _context.Task.Add(task);
    await _context.SaveChangesAsync();

    return CreatedAtAction("GetTask", new { id = task.ID }, task);
}

默认情况下,这有一些有趣的行为。它期望将整个User模型传递到POST请求中(如下所示),并在传递时实际创建用户:

{
  "id": 0,
  "title": "string",
  "user": {
    "id": 0,
    "firstName": "string",
    "lastName": "string"
  }
}

从技术上讲,我理解它为什么要这样做,但在一个真实的应用程序中,这绝对是不可接受的行为-所以我的问题是-在.NET中传递UserID并对模型进行验证的“正确/适当”方式是什么?我应该放弃使用"ModelState.IsValid“而进行手动验证吗?

作为第二个问题-我正在使用NSwag从我的API生成Swagger文档,它将"id“显示为需要传递给POST方法的参数。显然,Swagger不能被传递,因为它是在代码中生成的,但是有没有办法让ID不将ID显示为可传递的属性呢?

转载请注明出处:http://www.shandongyidao.com/article/20230526/2193975.html