将多个参数传递给DELETE请求c#web API

时间:2018-03-13 20:12:00

标签: c# rest parameters asp.net-web-api2 http-delete

我的问题是如何将多个参数传递给DELETE请求。

我的控制器类如下,

namespace MYAPI1.Controllers
{
    public class TaskController : ApiController
    {
        // DELETE: api/Task/5
        [Route("api/Task/id1/id2/{id3}")]
        public void Delete(int id,int id2, string id3)
        {
            TaskPersistent tp = new TaskPersistent();
            tp.deleteTask(id,id2,id3);
        }
    }
}

TaskPersistent.class如下,

public class TaskPersistent
{
    public void deleteTask(int id, int id2, string id3)
    {

        try
        {
            string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) =  VALUES ('" + id + "', '" + id2 + "', '" + id3 + "');";
            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sqlString, conn);
            cmd.ExecuteNonQuery();
            long x = cmd.LastInsertedId;

        }
        catch (Exception x)
        {
            Console.WriteLine(x);
        }

    }

}

我尝试使用这样的邮递员来消费这个,http://localhost:10927/api/Task?id1=1&id2=5&id3="2018-03-14" 但哪个不起作用,请帮我解决这个问题。

2 个答案:

答案 0 :(得分:4)

尝试以下

    [Route("api/Task/{id:int}/{id2:int}/{id3}")]
    public void Delete(int id,int id2, string id3)
    {
        TaskPersistent tp = new TaskPersistent();
        tp.deleteTask(id,id2,id3);
    }

通过以下方式致电:http://localhost:10927/api/Task/1/2/" 2018-03-14"

---或---

    [Route("api/Task")]
    public void Delete(int id,int id2, string id3)
    {
        TaskPersistent tp = new TaskPersistent();
        tp.deleteTask(id,id2,id3);
    }

通过以下方式致电:http://localhost:10927/api/Task?id=1&id2=2&id3=" 2018-03-14"

答案 1 :(得分:1)

尝试传递视图模型:

public class YourViewModel {
     public int Id1 { get; set;} 
     public int Id2 { get; set;} 
     public string Id3 { get; set;} 

   }

然后

[HttpPost]
[Route("api/Task")]
 public void Delete([FromBody] YourViewModel model)
 {
     TaskPersistent tp = new TaskPersistent();
     tp.deleteTask(model.Id1, model.Id2, model.Id3);
 }

通过这种方式,您不必在查询字符串中指定参数。但您必须确保请求标头包含:

'Content-Type: application/json'

<强>更新 如果您需要尝试一下,这就是您在使用JQuery时需要从客户端调用它的方法:

var myModel= { Id1:1, Id2:11 Id3:"test" }
$.ajax({
    type: 'POST',
    url: 'http://localhost:10927/api/Task',
    data: JSON.stringify(myModel),
    contentType: 'application/json;',
    dataType: 'json',
    success: function(data){  }
});