从HttpContext Angular和Web API获取数据

本文关键字:API 获取 数据 Web HttpContext Angular | 更新日期: 2023-09-27 18:24:22

在角度控制器中,我有这样的代码将$scope.myModel传输到Web API控制器:

$scope.upload[index] = $upload.upload({
  url: settings.constants.uploadURL,
  headers: { 'myHeaderKey': 'myHeaderVal' },
  data: { model: $scope.myModel },
  file: $file,
  fileFormDataName: 'myFile'
}).then(function (response) { ...

Web API控制器post方法看起来像这个

public HttpResponseMessage Post()
{
  return UploadFile(HttpContext.Current);
}

如何从HttpContext中获取数据:模型??

从HttpContext Angular和Web API获取数据

WebAPI并不是为以这种方式使用而设计的。具体来说,从WebAPI控制器方法中引用HttpContext.Current通常是不好的做法。如果确实要检查请求或响应,则应通过ApiController基类的属性引用它们,请参阅msdn文档。

通常,在这种情况下,人们更喜欢模型绑定。假设您在js:中

{
   foo: "bar"
}

您应该在C#中声明一个映射到它的类:

public class MyRequestModel
{
   public string Foo { get; set; }
}

通过声明您的API方法:

public HttpResponseMessage Post(MyRequestModel mdl)
{
// do stuff, mdl.Foo will have "bar" in it magically
}

这导致了将数据从javascript传输到C#的更面向对象的方式。它更具类型安全性,因为可以保证C#中的Foo属性将具有stringint,或者您声明的任何属性,而不是自己解析请求。