標準のHTTPPost、Get、Put、およびDelete属性と、VS2012によって構成されたルーティングを使用するAPIを作成しました。
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
HTML5とJavaScriptを使用してWebサイトの開発を開始しましたが、DeleteとPutがどのブラウザーでもサポートされていないことがわかりました。DeleteをPostとPutに変更する必要があります。
そのためには、次のいずれかを実行する必要があり、「ベストプラクティス」のアドバイスを探しています。1。)削除であることを指定するパラメーターを追加して別のPostメソッドを作成します。
//This is really my delete method
public virtual HttpResponseMessage Post(TEntity entity, bool delete)
2.)アクション名を使用するようにルーティングを変更してから、Postメソッドに「Delete」という名前を付けます。これはより意味があります。
//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メソッドを実行しましたが、「stringid」パラメーターがnullです。JavaScriptでこのajaxリクエストを実行する2つの方法を試しました。両方とも同じ方法で以下にあります:
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);
}
助言がありますか?