【发布时间】:2018-08-22 23:12:31
【问题描述】:
在我的 web API 删除请求中,它包含多个参数。我需要使用 C# windows 窗体应用程序和我的代码来使用这个 DELETE 请求。
private void btnDelete_Click(object sender, EventArgs e)
{
using (var client = new HttpClient())
{
person p = new person { ID = 1, SID = 5, Name = "paul"};
client.BaseAddress = new Uri("http://localhost:2733/");
var response = client.DeleteAsync("api/person/").Result;
if (response.IsSuccessStatusCode)
{
Console.Write("Success");
}
else
Console.Write("Error");
}
}
这就是我使用 Postman 使用它的方式,它工作正常http://localhost:2733/api/person/1/5/"paul" 如何使用我的 Windows 客户端使用它。我试试这两种方法,
var response = client.DeleteAsync("api/person/",p).Result;
和
var response = client.DeleteAsync("api/person/"+1+5+"paul").Result;
但这些都不起作用。如何将参数传递给 DELETE 请求。
更新:
这是我的控制器类,
[Route("api/person/{id:int}/{pid:int}/{pname}")]
[HttpDelete]
public void Delete(int id, int pid, string pname)
{
var pModel = new PModel
{
ID = id,
SID = pid,
Name= pname
};
Person p = new Person();
p.deletePerson(pModel);
}
这是 Person 类
public void deletePerson(PModel p)
{
try
{
string sql = $"DELETE from person WHERE ID = {p.ID} AND SID = {p.SID} AND Name= {p.Name}"; ;
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);
}
}
【问题讨论】:
-
我认为你用错了“消费”这个词。您将发出来自客户端的删除请求。
-
“不工作”并不能很好地描述问题所在。
-
使用 UI 阻塞
asyncAPI 会导致死锁 (.Result)。一直异步或根本不异步。 blog.stephencleary.com/2012/07/dont-block-on-async-code.html -
在 1 和 5 之间不需要
/吗? -
试试
var response = client.DeleteAsync($"api/person/{p.ID}/{p.SID}/{p.Name}").Result;
标签: c# rest asp.net-web-api2 url-parameters http-delete