Próbuję poradzić sobie z poberem i postem w tym samym sterowniku z tą samą trasą, ponieważ mam pewne, wywołania, że dane mogą korzystać z otrzymania lub post, aby zadzwonić do tego samego punktu końcowego .... to działa ...

-1
Mike Luken 15 marzec 2021, 02:21

1 odpowiedź

Najlepsza odpowiedź

Możesz spróbować zmienić swój kod jak poniżej:

    [HttpPost("GetAccount"), HttpGet("GetAccount")]
    [Route("api/accounts/GetAccount")]
    public string GetAccount()        
    {
        if ("GET" == HttpContext.Request.Method)
        {
            //if your `accountID` is fromquery in your get method.
            string accountID = HttpContext.Request.Query["accountID"];
            return "echoing accountID: " + accountID;
        }

        else if ("POST" == HttpContext.Request.Method)
        {
            string accountID = HttpContext.Request.Form["accountID"];
            return "echoing accountID: " + accountID;
        }
        else
        {
            return "error";
        }
    }

Ponadto myślę, że nie ma problemu z kodem. Podczas wydawania metody postu należy sprawdzić parametr konto.

Aktualizuj

Domyślny atrybut sterownika API jest [od modułu], więc musisz określić źródło. Jeśli nie chcesz określić jako [Fromform], możesz przekazać dane przez QueryString.

$.ajax({
            url: '/api/values/GetAccount?accountID=abcdefg',
            type: 'POST',
            dataType: 'JSON',
            contentType: "application/x-www-form-urlencoded; charset=UTF-8"
        })
            .done(function (result) {
                // verified that the result is NULL
                console.log(result.message);
            })
            .fail(function () {
                alert("ERROR");;
            })
            .always(function () {
                alert("DONE");
            });
    });

Akcja:

    [HttpPost("GetAccount"), HttpGet("GetAccount")]
    [Route("api/accounts/GetAccount")]
    public IActionResult GetAccount(string accountID)
    {
        string message = "echoing accountID: " + accountID;
        // accountID is NULL when doing a POST, but is correct for a GET...
        return new JsonResult(new { message = message });
    }
0
Yinqiu 15 marzec 2021, 05:56