将多个值从 WebApi (post) 返回到 AngularJs

我正在使用 .net 核心 C#、WebApi 和 AngularJs。


为了保存数据,我的 Angularjs 代码对我的 WebApi 进行了 $http 调用。我可以很好地从我的 api 返回单个数据,但不确定在这里返回多个值的最佳方法是什么。我可以用逗号分隔然后返回,但想知道是否有更好的方法。


所以基本上当 API 将数据保存到我的数据库时,如果保存成功,我想返回一个变量,布尔值,如果保存不成功,我想返回一个异常消息。下面是我的代码。


AngularJs 代码:


service.saveData(data).then(function (res) {                          

    //get someDataToReturn, dataSaved & exception raised if any from db save here.

    }, function (err) {

});

网络API代码:


[HttpPost("data/save")]

public async Task<IActionResult> SaveData([FromBody] List<UserData> data)

{

    bool dataSaved = true;

    string someDataToReturn = string.Empty;

    //do some processing and updating someDataToReturn here         


    //Saving data to DB

    dataSaved = SaveData(data);                


    //I want to return someDataToReturn, dataSaved(true or false) and exception raised from SaveData if any 

    return Ok(someDataToReturn);

}


//DB Call to save data

public bool SaveData(List<UserData> data)

{           

    try

    {

        foreach (var set in data)

        {

            //creating query etc


            _db.Execute(query);

        }                


        return true;

    }

    catch (SqlException ex)

    {


    }

    return false;

}

让我知道最好的方法。


芜湖不芜
浏览 228回答 3
3回答

皈依舞

首先,您应该检查请求正文中的值是否正确填充。看看DataAnnotations。您可以使用注释来指定模型中的必需、最小和最大长度等属性。这是关于如何定义 UserData 类所需的 Name 属性的示例public class UserData{&nbsp; &nbsp; [Required]&nbsp;&nbsp;&nbsp; &nbsp; public string Name { get; set; }&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;}如果请求模型不满足 UserData 类 DataAnnotations 上设置的指定规则,则上下文 ModelState 将设置为 false 并包含 DataAnnotations 错误。这可用于确定当前请求是否为错误请求并从中返回正确的 http 状态代码。[HttpPost("data/save")]public async Task<IActionResult> SaveData([FromBody] List<UserData> data){&nbsp; &nbsp; if (!ModelState.IsValid)&nbsp; &nbsp; &nbsp; &nbsp; return BadRequest(ModelState); //will return a 400 code&nbsp; &nbsp; ...然后关于 SaveData 方法。捕获控制器中的异常并从那里返回正确的状态代码[HttpPost("data/save")]public async Task<IActionResult> SaveData([FromBody] List<UserData> data){&nbsp; &nbsp; if (!ModelState.IsValid)&nbsp; &nbsp; &nbsp; &nbsp; return BadRequest(ModelState); //400 status code&nbsp; &nbsp; try&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; SaveData(data);&nbsp; &nbsp; }&nbsp; &nbsp; catch(Exception e)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; return InternalServerError(e); //500 status code&nbsp; &nbsp; }&nbsp; &nbsp; string someDataToReturn = string.Empty;&nbsp; &nbsp; return Ok(someDataToReturn ); //200 status code}public void SaveData(List<UserData> data){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; foreach (var set in data)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //creating query etc&nbsp; &nbsp; &nbsp; &nbsp;_db.Execute(query);&nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;}

慕虎7371278

您可以创建一个实体并返回它public class BaseResult{&nbsp; &nbsp; &nbsp;public bool Result{get;set;}&nbsp; &nbsp; &nbsp;public string Errors{get;set;}}或仅return Ok( new { result = dataSaved , error= exception.Message});

偶然的你

您可以创建一个实体并返回它public class BaseResult{&nbsp; &nbsp; &nbsp;public bool Result{get;set;}&nbsp; &nbsp; &nbsp;public string Errors{get;set;}}或仅return Ok( new { result = dataSaved , error= exception.Message});
打开App,查看更多内容
随时随地看视频慕课网APP