【问题标题】:How to return data from Web Api controller?如何从 Web Api 控制器返回数据?
【发布时间】:2017-01-12 08:03:55
【问题描述】:

您好,我正在开发 restfull web api 应用程序。将数据插入数据库后,我想返回 0 表示成功,1 表示错误,并将数据作为分配给用户的唯一 ID。我想以 json 格式返回上述数据。我的要求是我必须以 json 格式向控制器发送数据并以 json 格式接收数据。我有以下代码,它正在工作,但我想在这里问几点。 下面是我的 User_Creation 控制器代码。

public result Post(Noor_Users users)
        {
            result obj = new result();
              if (ModelState.IsValid)
                {
                    entityObject.Noor_Users.Add(users);
                    int result = entityObject.SaveChanges();
                    if(result==1)
                    {
                        obj.success = 0;
                        obj.id = 5;
                        return obj;
                    }
                    else
                    {
                        obj.error = 1;
                        return obj;
                    }
                }
                else
                {
                    obj.error = 1;
                    return obj;
                }
            }
}

我的 service.js 文件包含以下代码。

app.service("UserCreation", function ($http) {
    this.saveSubscriber = function (sub) {
        return $http({
            method: 'post',
            data: JSON.stringify(sub),
            url: 'api/User_Creation',
            contentType: "application/json"
        });
    }
});

这是我的 controller.js 代码。

app.controller('UserCreation', function ($scope, UserCreation) {

    $scope.saveSubs = function () {
        var sub = {
            user_email: $scope.user_email,
            user_password: $scope.user_password,
        };
        var saveSubs = UserCreation.saveSubscriber(sub);
        saveSubs.then(function (data) {
            alert(JSON.stringify(data.data));
        }, function (error) {
            console.log('Oops! Something went wrong while saving the data.')
        })
    };
});

我期待以下 json 格式的响应。

● status - 0 表示成功,1 表示失败。 ● 数据 ○ id - 分配给用户的唯一 ID ● error - 失败时的错误消息

这工作绝对没问题。我在 webapiconfig.cs 文件中有以下代码行

config.Formatters.JsonFormatter.SupportedMediaTypes
    .Add(new System.Net.Http.Headers.MediaTypeHeaderValue("text/html"));

通过这行代码,我总是可以接收 json 格式的数据。但是在 angularjs 成功调用中,我需要对收到的数据进行字符串化。如果我所有的数据都以 json 格式返回,那么为什么我应该将其转换为 json?也有人可以告诉我上面的逻辑是返回数据的好习惯吗?谢谢你。

【问题讨论】:

    标签: angularjs json asp.net-web-api2


    【解决方案1】:

    尝试以下步骤:

    1. 在您的 WebApiConfig.cs 顶部添加这两行代码

      public static void Register(HttpConfiguration config)
      {
           config.Formatters.Clear();
           config.Formatters.Add(new JsonMediaTypeFormatter());
      
    2. 用下面的一个编辑你的控制器动作

      public IHttpActionResult Post(Noor_Users users)
      {
          result obj = new result();
          if (ModelState.IsValid)
          {
              entityObject.Noor_Users.Add(users);
              int result = entityObject.SaveChanges();
              if (result == 1)
              {
                  obj.success = 0;
                  obj.id = 5;
              }
              else
              {
                  obj.error = 1;
              }
          }
          else
          {
              obj.error = 1;
          }
      
          return Ok(obj);
      }
      

    【讨论】:

    • 感谢您的回复。我仍然需要下面的代码行吗? JSON.stringify(data.data)
    • 我写了上面的代码。如果我没有写 json.stringify 我仍然在成功调用我得到 [object object]。所以我很困惑我的数据以哪种格式返回?
    • 如果我想返回项目列表,例如 GET,那么如何通过 IHttpActionResult 返回?
    • 而不是 alert(JSON.stringify(data.data)); 使用 console.log(data) 从浏览器中检查对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2022-02-09
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多