Skip to content

WebApiContrib/WebApiContrib.Formatting.Jsonp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e714f2a · Oct 13, 2015

History

88 Commits
Mar 13, 2015
Mar 13, 2015
Jun 26, 2015
Oct 13, 2015
Aug 12, 2015
Jan 9, 2014
Jul 24, 2012
Mar 13, 2015
Dec 6, 2012
Mar 12, 2015
Oct 13, 2015
Mar 16, 2015
Mar 13, 2015
Mar 16, 2015
Mar 16, 2015
Mar 13, 2015
Mar 13, 2015

Repository files navigation

WebApiContrib.Formatting.Jsonp

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.