当前位置: 首页 > news >正文

webapi返回json字符串

第一种

直接在方法中返回json。

public class DefaultController : ApiController
{
    [HttpGet]
    public IHttpActionResult Now()
    {
        return Json(new { n = new Random().Next(10, 100), t = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") });
    }
}

不过一些内部返回的默认是xml格式,比如访问一个不存在的地址/api/xxx

<Error>
<Message>
找不到与请求 URI“http://localhost:5566/api/xxx”匹配的 HTTP 资源。
</Message>
<MessageDetail>未找到与名为“xxx”的控制器匹配的类型。</MessageDetail>
</Error>

第二种

移除xml格式的支持(因为默认xml比json的优先,移除xml后默认就是json了)

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API 配置和服务

        //移除xml格式的支持
        config.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

        // Web API 路由
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

第三种

自定义内容响应格式IContentNegotiator,需要引用System.Net.Http.Formatting程序集。

public class SimpleContentNegotiator : IContentNegotiator
{
    private readonly MediaTypeFormatter _formatter;
    private readonly string _mediaType;

    public SimpleContentNegotiator(MediaTypeFormatter formatter, string mediaType)
    {
        _formatter = formatter;
        _mediaType = mediaType;
    }

    public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)
    {
        var result = new ContentNegotiationResult(_formatter, new MediaTypeHeaderValue(_mediaType));
        return result;
    }
}
// Web API 配置和服务

//自定义内容响应格式
config.Services.Replace(typeof(IContentNegotiator), new SimpleContentNegotiator(new JsonMediaTypeFormatter(), "application/json"));

转载于:https://www.cnblogs.com/junio/p/10765602.html

相关文章:

  • Hash小结
  • css 清除浮动样式
  • linux shadow破解
  • 大学生如何看待校园考勤
  • Android中ListView结合CheckBox判断选中项
  • 常用Linux命令
  • ETCD 安装及使用
  • Server.MapPath和Request.PhysicalApplicationPath的异同
  • 滴滴 Elasticsearch 多集群架构实践
  • php实现猴子选大王
  • 报错:exec:gcc executable file not found in %PATH%
  • 趣味集算:数独
  • Python学习(三)流程控制
  • OpenGL学习(3)——Shader(补)
  • WebService到底是什么?
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 3.7、@ResponseBody 和 @RestController
  • 4. 路由到控制器 - Laravel从零开始教程
  • HashMap ConcurrentHashMap
  • HTML5新特性总结
  • Invalidate和postInvalidate的区别
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Js基础知识(一) - 变量
  • Laravel Mix运行时关于es2015报错解决方案
  • Octave 入门
  • PHP 的 SAPI 是个什么东西
  • TypeScript实现数据结构(一)栈,队列,链表
  • vagrant 添加本地 box 安装 laravel homestead
  • webpack4 一点通
  • webpack入门学习手记(二)
  • 闭包,sync使用细节
  • 从伪并行的 Python 多线程说起
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 聊聊flink的TableFactory
  • 学习使用ExpressJS 4.0中的新Router
  • 用mpvue开发微信小程序
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 仓管云——企业云erp功能有哪些?
  • # 数论-逆元
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (2)STM32单片机上位机
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (LeetCode 49)Anagrams
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .net 生成二级域名
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET运行机制
  • @RequestBody的使用
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [CareerCup] 12.3 Test Move Method in a Chess Game 测试象棋游戏中的移动方法