WebApiContrib.Formatting.Jsonp
provides a JSONP MediaTypeFormatter implementation for ASP.NET Web API.
In order to add it to your Web API solution, run Install-Package WebApiContrib.Formatting.Jsonp
from your NuGet Package Manager console in Visual Studio.
To use the JsonpMediaTypeFormatter
, add the following code to your configuration in Global.asax.cs:
GlobalConfiguration.Configuration.AddJsonpFormatter();
You can specify a MediaTypeFormatter
and callback parameter name as optional parameters. By default, the JsonpMediaTypeFormatter
will use the config.Formatters.JsonFormatter
and callback
as default values.
You should specify text/javascript
the media type to accept in the request's Accept
header. If you leave this out, the client may receive application/json
as the default JsonMediaTypeFormatter
will likely handle the request. In other words, the Accept
header is used as the means to signal Web API to use the JsonpMediaTypeFormatter
. For example, in JQuery, you would write:
$.ajax({
type: "GET",
url: "/jsonp-endpoint?callback=callme",
contentType: "text/javascript",
// ...
});
The JsonpMediaTypeFormatter
will then match the specified callback parameter name from the request URI, e.g. ?callback=?
.
If you are using traditional routing, update your Default ASP.NET Web API route in /App_Start/WebApiConfig.cs
:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
To see the JsonpMediaTypeFormatter
in action, just clone this project, run the WebContribContrib.Formatting.Jsonp.SampleWebHost
project web application, and then start the WebApiContrib.Formatting.Jsonp.SampleJQueryClient
web application and hit the "Get JSONP" button.