gpt4 book ai didi

c# - 如何让 WebAPI 在不使用 C# 属性的情况下接受复杂对象作为 DELETE HTTP 动词的参数?

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:37 25 4
gpt4 key购买 nike

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

给定 WebAPI Controller 上的 public void Delete(MyClass m) 方法和由值对象组成的类 MyClass 我该如何格式化 HTTP DELETE 请求使用 $http 而不在 C# 中指定属性(即 [FromUri]?

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

我正在开发一个插件系统,我试图在花费的学习时间、编写时间和代码长度方面使消耗程序员尽可能简单。

本质上,插件系统将允许 CRUD 访问 EF 对象。在服务器上,我会让他们实现一个接口(interface),而我只想:

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

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

最佳答案

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

关于c# - 如何让 WebAPI 在不使用 C# 属性的情况下接受复杂对象作为 DELETE HTTP 动词的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com