簡體   English   中英

驗證數據模型

[英]Validating a datamodel

我創建了一個webAPI, datamodel如下所示:

{
 "name" : "",
  "age" : ""
}

由於這是我創建的第三方API,因此將有許多其他開發人員嘗試訪問它。 他們常犯的錯誤之一是,他們有時會忘記datamodel中的某些字段。 例如,他們可能根本忘記輸入age值。

因此,他們只會發送name ,不會發送age ,如下所示。

{
     "name" : ""
}

如何從控制器進行驗證檢查,以查看開發人員是否忘記了在JSON中輸入屬性age

我嘗試檢查null,但沒有用。

public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
    if(stu.age == null) { DISPLAY ERROR } // This doesn't work
...
}

與大多數Microsoft Web框架一樣,您可以使用DataAnnotatons ,檢查MSDN網站,可以找到有關如何在Json Post中使用DataAnnotations的示例,並可以使用屬性為傳入模型指定Range,Required等,

您正在尋找模型驗證之類的東西。

public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
if (!context.ModelState.IsValid)
            {
                context.Result = new BadRequestObjectResult(context.ModelState);
            }
...
}

您的模型類應如下所示:

public class Student 
{
   [Required]
   public string Name {get; set;}

   [Required]
   public int Age {get; set;}
}

然后在控制器中:

public class StudentController : Controller 
{
     public async Task<IActionResult> SaveStudent([FromBody] Student student)
    {
        if (ModelState.IsValid)
        {
              _dbContext.Students.Add(student);
              await _dbContext.SaveChangesAsync();
              return Json(true)
        }

       return Json(false);
    }
}

現在,您可以基於SaveStudent()方法返回的輸出在客戶端顯示自定義錯誤或成功消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM