2

I am using asp.net core web api. below is my simple post function which is having a single string parameter. The problem is when I use [FromBody] the string stays null. I am using PostMan to test my service. I want raw data to pass from client to my controller. In Postman I am selecting body type RAW and I set the header Content-Type text/plain. The Raw Body contains Just "Hello World" string.

[HttpPost]
        [Route("hosted-services/tokenize-card")]
        public IActionResult Test([FromRoute]decimal businessKey,[FromBody] string body)
        {
            var data = businessKey;
            return new JsonResult("Hello World");
        }
8
  • 1
    The content of your POST request must be formated with a registered content-type. If it's application/json the content must be "mystring" with the double quote Commented Jan 10, 2017 at 0:07
  • I have updated my question Commented Jan 10, 2017 at 0:12
  • 1
    Source. When a parameter has [FromBody], Web API uses the Content-Type header to select a formatter. Only XML and JSON content-types are supported by default. Commented Jan 10, 2017 at 0:19
  • 2
    Your parameter is a string, so your raw content must be a json string. "Hello World" WITH the " Commented Jan 10, 2017 at 0:41
  • 1
    Possible duplicate of FromBody string parameter is giving null Commented Nov 18, 2017 at 1:19

3 Answers 3

7

Like the doc says :

When a parameter has [FromBody], Web API uses the Content-Type header to select a formatter.

Only XML and JSON content-types are supported by default. So you need to use application/xml, application/json or register a custom IInputFormatter.

Next, you need to send a content that match the selected content-type. For json, if the parameter is int send a number. If it's a class, send a json object. If it's a string, send a json string. Etc.

int => 14
string => "azerty"
class => { "propName" : "value" }
Array => []
... => ...

In your case you should send application/json content-type and as content :

"Hello string"

And not just

Hello string

Aspnet core json input formatter implementation

Aspnet core xml input formatter implementation

Example: Creating a CSV Media Formatter

Sign up to request clarification or add additional context in comments.

1 Comment

For .net core 3.1 post(url, JSON.stringify(yourVariable)) worked like charm at the controller MyMethod([FromBody] string yourVariable)
0

I did make it work by passing as row data in PostMan. Do not forget to add "=" sign as prefix in to the values.

 public string Post([FromBody]string value)
 {
     return value;
 }

enter image description here

1 Comment

Please = did not work.. For .net core 3.1 post(url, JSON.stringify(yourVariable)) worked like charm at the controller MyMethod([FromBody] string yourVariable)
0

Frombody means that get body directly.it is not necessary to use variable and value pairs.

For Example:

Your controller is like this.

[HttpPost]
public IActionResult GetStringFromBody([FromBody] string token)
    {
    ...
    }

False:

False

True:

True

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.