liang.good
liang.good

Reputation: 273

Can't use Json() in asp.net core web api as it in asp.net core web

In asp.net core web I create a controller and I can use:

return Json(new {status=true});

but in asp.net core web API I can't do it.

In a controller:

[HttpGet("{id}")]
        public JsonResult Get(int id)
{

}

I can not return Json()

How to use it?

Upvotes: 0

Views: 1002

Answers (2)

mj1313
mj1313

Reputation: 8459

Asp.net core web api inherit from controllerBase, which doesn't contain a Json(Object) method. You should initialize a new JsonResult yourself in the action.

[HttpGet("{id}")]
public JsonResult Get(int id)
{
    return new JsonResult(new { status = true });
}

Upvotes: 0

Sai Gummaluri
Sai Gummaluri

Reputation: 1394

Asp.Net Core Web API does provide support for wide varieties of response types, with Json being one among them. You can do that like shown below. Make sure you have all your required dependencies. You can learn about the dependencies from the documentation link I attached in this answer.

[HttpGet]
public IActionResult Get()
{
    return Json(model);
}

You can also specify strict response formats using the [Produces] Filter on your controller.

Configuring Custom Formatters

You can also configure your own custom formatters in Asp.Net Web API project by calling the .AddFormatterMappings() from ConfigureServices method inside of your Startup.cs. This allows for a greater control on your content negotiation part and lets you achieve strict restrictions.

Please go through this documentation to understand further.

Using Responses with Status Codes

However, when using Web API, I suggest you use the helper methods that are built in so that your response becomes more expressive as it contains both the response content along with the status code. An example of how to do that is below

[HttpGet]
public ActionResult Get()
{
    return Ok(_authors.List());
}

For a full list of helper methods available, you can take a look at the Controller.cs and ControllerBase.cs classes.

Upvotes: 1

Related Questions