簡體   English   中英

如何將多個參數傳遞給DELETE請求C#Rest API

[英]How to pass multiple parameters to DELETE request C# Rest API

我需要將3個參數傳遞給我的API DELETE請求。 這是我嘗試的代碼。

TaskModel

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拋出異常: 'System.NullReferenceException' in DeleteAPI.dll (我在我的代碼行中注釋了錯誤發生)。 我在這里做錯了。

您需要通過將TaskModel作為主體發布來使用此API,以使模型綁定程序與您設置Delete Controller操作的方式一起使用。 或者,將Delete方法的參數更改為int developerId, int projectId, 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);
    }
string sqlString = "DELETE from devproj WHERE (DeveloperID, ProjectID, WorkDate) =  VALUES ('" + task.DeveloperID + "', '" + task.ProjectID + "', '" + task.WorkDate + "')"; // System.NullReferenceException throw

此查詢不起作用。 SQL刪除是:

string sqlString = $"DELETE from devproj WHERE DeveloperID = {task.DeveloperID} AND ProjectID = {task.ProjectID} AND WorkDate = {task.WorkDate}";

並且不要忘記在執行查詢之前檢查模型中的空值。

暫無
暫無

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

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