如何在ServiceStack中实现JSONP格式化程序

时间:2015-04-09 05:40:36

标签: c# jsonp servicestack

目前在我的Web API中提到的类实现了

    public class ServiceStackTextFormatter : MediaTypeFormatter
    {
        public ServiceStackTextFormatter()
        {
            JsConfig.DateHandler = JsonDateHandler.ISO8601;
            SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

            SupportedEncodings.Add(new UTF8Encoding(encoderShouldEmitUTF8Identifier: false, throwOnInvalidBytes: true));

            SupportedEncodings.Add(new UnicodeEncoding(bigEndian: false, byteOrderMark: true, throwOnInvalidBytes: true));


        }
}

我只想知道如何在ServiceStack中实现JSNOP,我知道我们可以使用Newtnsoft json实现它。我尝试过使用下面提到的代码并且工作正常。

 public class FormatterConfig
{
    public static void RegisterFormatters
                (MediaTypeFormatterCollection formatters)
    {
        var jsonFormatter = formatters.JsonFormatter;
        jsonFormatter.SerializerSettings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };
        formatters.Insert(0, jsonFormatter);
        var jsonpFormatter =
                new JsonpMediaTypeFormatter(formatters.JsonFormatter);
        formatters.Insert(1, jsonpFormatter);
    }
}

所以我只想知道如何使用ServiceStack实现目标?

1 个答案:

答案 0 :(得分:3)

通过向QueryString添加?callback=cb,ServiceStack已经为所有服务内置了JSONP支持,例如:http://techstacks.io/overview?callback=cb

将JSON响应包装在指定的JS回调中,例如:

cb({...})