为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
芜湖不芜 2021-11-28 16:15:18
我正在使用 .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 datapublic bool SaveData(List<UserData> data){               try    {        foreach (var set in data)        {            //creating query etc            _db.Execute(query);        }                        return true;    }    catch (SqlException ex)    {    }    return false;}让我知道最好的方法。
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

首先,您应该检查请求正文中的值是否正确填充。


看看DataAnnotations。您可以使用注释来指定模型中的必需、最小和最大长度等属性。


这是关于如何定义 UserData 类所需的 Name 属性的示例


public class UserData

{

    [Required]  

    public string Name { get; set; }        

}

如果请求模型不满足 UserData 类 DataAnnotations 上设置的指定规则,则上下文 ModelState 将设置为 false 并包含 DataAnnotations 错误。这可用于确定当前请求是否为错误请求并从中返回正确的 http 状态代码。


[HttpPost("data/save")]

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

{

    if (!ModelState.IsValid)

        return BadRequest(ModelState); //will return a 400 code

    ...

然后关于 SaveData 方法。捕获控制器中的异常并从那里返回正确的状态代码


[HttpPost("data/save")]

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

{

    if (!ModelState.IsValid)

        return BadRequest(ModelState); //400 status code


    try

    {

        SaveData(data);

    }

    catch(Exception e)

    {

        return InternalServerError(e); //500 status code

    }


    string someDataToReturn = string.Empty;

    return Ok(someDataToReturn ); //200 status code

}


public void SaveData(List<UserData> data)

{           

    foreach (var set in data)

    {

        //creating query etc


       _db.Execute(query);

    }                

}


查看完整回答
反对 回复 2021-11-28
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您可以创建一个实体并返回它


public class BaseResult{

     public bool Result{get;set;}

     public string Errors{get;set;}

}

或仅


return Ok( new { result = dataSaved , error= exception.Message});


查看完整回答
反对 回复 2021-11-28
?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以创建一个实体并返回它


public class BaseResult{

     public bool Result{get;set;}

     public string Errors{get;set;}

}

或仅


return Ok( new { result = dataSaved , error= exception.Message});


查看完整回答
反对 回复 2021-11-28
  • 3 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信