2

我在服务器上使用 C#/WebAPI,在客户端使用 AngularJS。

给定一个public void Delete(MyClass m)WebAPI 控制器上的方法和一个由值对象组成的类,我如何在不指定 C# 中的属性的情况下MyClass格式化 HTTP DELETE 请求(即?$http[FromUri]

这就是我使用分层对象而不是 ID 的原因:

我正在开发一个插件系统,我试图让消费程序员尽可能简单,包括学习时间、写作时间和代码长度。

插件系统本质上将允许 CRUD 访问 EF 对象。在服务器上,当我想成为时,我会让他们实现一个接口:

public interface IMyInterface<TEntity>
{
    IEnumerable<TEntity> Get();
    void Put(TEntity t);
    void Post(TEntity t);
    void Delete(TEntity t);
}

我现在正在Delete客户端工作,由于某种原因,在没有 C# 属性的具体实现(如[FromUri]. 据我了解,属性不是从接口继承的,因此,如果我的客户端(AngularJS)执行类似$http.delete('api/uri', { params: { objectToDelete } });属性的操作,则需要使用参数来使删除工作。我也尝试过使用data配置对象的属性,但也没有用。我知道将 ID 作为Delete方法的参数是传统/标准,但如果这里存在这样的东西,那么客户端将需要知道什么构成了“密钥”——这更适合消费程序员编写。

4

1 回答 1

1

MyClass是一种复杂类型,并从请求正文与 ASP.NET Web API 绑定。HTTP 语义不允许 DELETE 的请求正文,因此,您将无法使用 Angular 发布带有 DELETE 的请求正文。确切地说,这不是 Angular 的问题,但大多数浏览器不会发送带有 AJAX DELETE 请求的正文。

于 2013-08-28T20:35:08.880 回答