如何传递多个参数来删除请求C#Rest API
我需要向API删除请求传递3个参数。这是我的代码,我已经尝试过了 任务模型如何传递多个参数来删除请求C#Rest API,c#,rest,parameters,asp.net-web-api2,http-delete,C#,Rest,Parameters,Asp.net Web Api2,Http Delete,我需要向API删除请求传递3个参数。这是我的代码,我已经尝试过了 任务模型 public class TaskModel { public int DeveloperID { get; set; } public int ProjectID { get; set; } public string WorkDate { get; set; } } 这是一个控制器类。调用了TaskController [Route("api/Task")] public v
public class TaskModel
{
public int DeveloperID { get; set; }
public int ProjectID { get; set; }
public string WorkDate { get; set; }
}
这是一个控制器类。调用了TaskController
[Route("api/Task")]
public void Delete(TaskModel value)
{
TaskPersistent tp = new TaskPersistent();
tp.deleteTask(value);
}
这是TaskPersistent.class
public void deleteTask(TaskModel task)
{
try
{
string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) = VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sqlString, conn);
cmd.ExecuteNonQuery();
long x = cmd.LastInsertedId;
}
catch (MySqlException x)
{
int errr = x.Number;
Console.WriteLine(errr);
}
}
我使用ARC rest客户端使用此API,如下所示,http://localhost:2731/api/Task?DeveloperID=1&ProjectID=2&WorkDate=“2018-03-14”
但当我像这样传递参数时,API抛出异常:
DeleteAPI.dll中的'System.NullReferenceException'(我在代码中注释了错误发生行)。我在这里做错了什么。您需要使用此API,将您的TaskModel
发布为模型绑定器的主体,以便按照设置Delete
控制器操作的方式使用。或者,将Delete
方法参数更改为intdeveloperid、intprojectid、DateTime workDate
[Route("api/Task")]
public void Delete(int developerId, int projectId, DateTime workDate)
{
var taskModel = new TaskModel
{
DeveloperId = developerId,
ProjectID = projectId,
WorkDate = workDate
};
TaskPersistent tp = new TaskPersistent();
tp.deleteTask(taskModel);
}
您需要通过将您的TaskModel
发布为模型绑定器的主体来使用此API,以便使用设置Delete
控制器操作的方式。或者,将Delete
方法参数更改为intdeveloperid、intprojectid、DateTime workDate
[Route("api/Task")]
public void Delete(int developerId, int projectId, DateTime workDate)
{
var taskModel = new TaskModel
{
DeveloperId = developerId,
ProjectID = projectId,
WorkDate = workDate
};
TaskPersistent tp = new TaskPersistent();
tp.deleteTask(taskModel);
}
此查询不起作用。
SQL删除是:
string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";
在执行查询之前,不要忘记检查模型中的空值
此查询不起作用。
SQL删除是:
string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";
在执行查询之前,不要忘记检查模型中的空值。可能的重复项需要通过将TaskModel
发布为模型绑定器的主体来使用此API,以便按照设置Delete
控制器操作的方式进行操作。或者,将Delete
方法参数更改为int developerId,int projectId,DateTime workDate
@VidmantasBlazevicius,您能给我一个答案吗。请。如果您的API方法用于删除操作,一个好的做法是将[HttpDelete]
添加为属性,并发送Delete而不是GET。是的,在[Route]之间属性和方法声明<代码>[Route(“api/Task”)][HttpDelete]公共无效删除(TaskModel值)
因此,您可以使用DELETE verbs而不是GET调用。您需要通过将TaskModel
发布为模型绑定器的主体来使用此API,以使用设置DELETE
控制器操作的方式。或者,将Delete
方法参数更改为int developerId,int projectId,DateTime workDate
@VidmantasBlazevicius,您能给我一个答案吗。请。如果您的API方法用于删除操作,一个好的做法是将[HttpDelete]
添加为属性,并发送Delete而不是GET。是的,在[Route]之间属性和方法声明[Route(“api/Task”)][HttpDelete]public void Delete(TaskModel value)
,因此您可以使用Delete谓词而不是GET调用。我给出了一个示例代码,说明如何设置控制器,使其以当前的使用方式工作。我尝试了此方法,但当我尝试此方法时,现在出现了此异常,MySql.Data.dll中的“MySql.Data.MySqlClient.MySqlException”@Gamma您得到的异常是什么,以及sqlString
变量的当前运行时值是什么?请尽可能彻底,以便我们能够适当地帮助您。问题解决了,先生,我以用户身份编辑了我的查询。匿名者的答案。多谢各位much@Gamma没问题,我很高兴你已经解决了你的问题。我提供了一个示例代码,说明如何设置控制器,使其与你当前使用的方式兼容。我尝试了这个,但当我尝试这个时,现在出现了这个异常,MySql.Data.dll中的“MySql.Data.MySqlClient.MySqlException”@Gamma您得到的异常是什么,以及sqlString
变量的当前运行时值是什么?请尽可能彻底,以便我们能够适当地帮助您。问题解决了,先生,我以用户身份编辑了我的查询。匿名者的答案。多谢各位much@Gamma没问题,我很高兴你解决了你的问题