How to receive json data in web api?

mc 1,961 Reputation points

I am using .net core web api but I can not receive json data.

public async Task<IActionResult>PostAsync(string username,string password)



the username=null and password is null .

someone tell me should add [FromBody] but I can only add one.

and I do not want to put the parameter in a class object.

I only want to use the seperate parameter.

A set of technologies in the .NET Framework for building web applications and XML web services.
3,160 questions
0 comments No comments
{count} votes

4 answers

Sort by: Most helpful
  1. Duane Arnold 3,216 Reputation points

    I wouldn't be too keen on sending a user-id and psw as string over HTTP unless it was HTTPS, and Json is string.

    Maybe you should look into other means of user autentication using ASP.NET WebAPI, like JWT and others.

  2. AgaveJoe 22,706 Reputation points

    someone tell me should add [FromBody] but I can only add one. and I do not want to put the parameter in a class object. I only want to use the separate parameter.

    Your requirement is not possible by design in Web API Core. You'll need to write custom middleware to accomplish this task.

    0 comments No comments

  3. Bruce ( 36,261 Reputation points

    its simple:

    public class PostRq
          public string username {get; set;}
          public string password {get; set;}
     public async Task<IActionResult>PostAsync(PostRq rq)

    in javascript call:

    var response = await fetch(url, {
        method: "POST",
        headers: {"Content-Type": "application/json"},
        data: JSON.stringify({username, password})
    }).then(r => r.json());

  4. Zhi Lv - MSFT 24,391 Reputation points Microsoft Vendor

    Hi @mc ,

    public async Task<IActionResult> PostAsync( string username,  string password)  
        return Ok("Success");  

    By using the above code, to transfer parameter to the method, you can use the Query String method: add the parameter at the end of the request url, like this: https://localhost:44310/api/todo?username=Jack&password=abc123

    Then, the result as below:


    If you want to transfer the data from request body and use json format, it is better to create a model, then use the following script to get send the parameter:


    you can download the code from here

    The result as below:


    Besides, you can also try to get the parameter from the form, check the following sample code:

    JavaScript code: use the FormData object to transfer data:



        public async Task<IActionResult> PostAsync([FromForm]string username,  [FromForm]string password)  
            return Ok("Success");  

    The result as below: when using Postman, select the form-data:


    If the answer is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    Best Regards,