我编写了一个 API,它使用标准 HTTP Post、Get、Put 和 Delete 属性以及 VS 2012 配置的路由
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
现在我已经开始使用 HTML5 和 JavaScript 开发我的网站,并且发现 Delete 和 Put 在任何浏览器中都不是支持方法。我需要将我的 Delete 更改为 Post 以及 Puts。
为此,我需要执行以下任一操作,并且我正在寻找“最佳实践”建议:1.) 创建另一个带有添加参数的 Post 方法以指定它是删除
//This is really my delete method
public virtual HttpResponseMessage Post(TEntity entity, bool delete)
2.)更改路由以使用操作名称,然后将我的 Post 方法命名为“删除”,这将更有意义
//New Routing
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//More meaningful post method
[HttpPost]
public virtual HttpResponseMessage Post(TEntity entity){}
请注意,我希望外部用户能够绑定到 API,这就是为什么我正在寻找最佳实践建议的原因。API 路由中有 {action} 是否常见?
提前致谢
编辑:
使用 Ajax,我在我的 API 中点击了我的 Delete 方法,但是我的“字符串 id”参数为空。我尝试了两种方法在我的 JavaScript 中执行这个 ajax 请求。两者都在以下相同的方法中:
function AjaxReq() {
$.ajax({
url: 'http://localhost:49482/api/pallets/',
type: 'delete',
data: { id: 12 },
success: function (response) { alert("Success") },
error: function (response) { alert("Failed:" + response) }
});
}
function httpRequest() {
var request = new XMLHttpRequest();
request.open("delete", "http://localhost:49482/api/pallets/", true);
request.send("id=12");
alert(request.responseText);
}
有什么建议么?