簡體   English   中英

在Web API中調用DELETE方法

[英]Calling DELETE method in Web API

在一個新的Web API項目中:

  • GET方法

     // GET api/values/5 public string Get(int id) { return "value"; } 
  • DELETE方法

     // DELETE api/values/5 public void Delete(int id) { var client = new MongoClient("mongodb://localhost:27017"); var server = client.GetServer(); var db = server.GetDatabase("Test"); var collection = db.GetCollection<Entity>("Entities"); var deleteEntity = Query<Entity>.EQ(e => e.Id, id); collection.Remove(deleteEntity); } 

他們有一個類似的URL: api/values/5

當我想調用Delete方法時,它會執行Get方法。 我該怎么辦?

URL是相同的,但您使用“DELETE”'http方法'而不是“GET”來調用此URL。 如果您只是瀏覽瀏覽器中的URL,瀏覽器將只執行GET。 如何以編程方式執行DELETE(或POST或PUT)將取決於您用於調用服務的庫,但它們都傾向於使用某種參數或屬性來設置此方法。

看一下HttpDelete屬性:

https://msdn.microsoft.com/en-us/library/system.web.mvc.httpdeleteattribute(v=vs.118).aspx

你需要像這樣裝飾你的方法,以便MVC知道如何處理傳入的請求:

[HttpGet]
public string Get(int id)
{
    ...
}

[HttpDelete]
public void Delete(int id)
{
    ...
}

如果您通過HTML表單提交刪除方法,請記住它們僅支持POST和GET方法,因此您需要通過JavaScript提交DELETE:

來自瀏覽器的http刪除請求

使用...

獲取:/ controller / 123456

刪除:/ controller / id / 123456

下面的配置文件解決了我的問題:

<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

  <!--This will enable all Web API verbose-->
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM