博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Web API 中的返回数据格式以及依赖注入
阅读量:7048 次
发布时间:2019-06-28

本文共 2031 字,大约阅读时间需要 6 分钟。

 

本篇涉及ASP.NET Web API中的返回数据合适和依赖注入。

获取数据

 

public IEnumerable
Get(){ var results = reop.GetAllFoods() .OrderBy(f => f.Description) .Take(25) .ToList(); return results;}

 

默认情况下,ASP.NET API控制器方法返回json数据格式。在请求的时候可以要求其它的格式,比如:

User-Agent:Fiddler
Host:localhost:8000
Accept:text/xml
请求数据也可以要求多个格式,比如:
User-Agent:Fiddler
Host:localhost:8000
Accept:text/xml, applicaiton/json, text/html
此时,服务端首先查看客户端所能接受的类型数组,然后与服务端能接受的类型数组匹配,而服务端优先默认返回json,所以,以上请求返回json数据。返回的json数据类似如下:
Description:'dddd'
也就是首字母大写。如何让首字母变成小写呢?
当然可以通过让视图模型的属性名第一个字母小写而实现。不过,还可以自定义Formatter。
自定义返回数据的格式
在WebApiConfig.cs文件中。

 

using Newtonsoft.Json.Serialization;public static class WebApiConfig{    public static void Register(HttpConfiguration config)    {        config.Routes.MapHttpRoute(            name: "DefaultApi",            routeTemplate: "api/{controller}/{id}",            defaults: new {id = RouteParameter.Optional}        );                var jsonFormatter = config.Formatters.OfType
().FirstOrDefault(); jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }}

 

此时, 返回的数据格式大致是:

description:'dddd'
依赖注入 Dependency Injection
比如在controller中,我们希望通过构造函数注入repoitory接口。

 

public class FoodsController : ApiController{    IFoodRepository _reop;        public FoodsController(IFoodRepository reop)    {        _repo = repo;    }}

 

此时运行会报错:System.InvalidOperaitonException

如何让API支持这种通过构造函数的依赖注入呢?
安装Ninject.MVC3
安装后,会在App_Data文件中多了一个NinjectWebCommon类。在其RegisterServices中可以注册依赖。

 

private static void RegisterServices(IKernel kernel){    kernel.Bind
().To
();}

 

在这里,我们告诉IOC Container, 当有请求过来要求IReposiotory的时候,就返回Repository实例。

最后,我们需要告诉API Ninject的存在。
NinjectWebCommon类的CreateKernel方法中。
安装WebApiContrib.IoC.Ninject

 

using WebApiContrib.IoC.Ninject;...private static IKernel Createkernel(){    var kernel = new StandardKernel();        //支持API    GlobalConfiguraiton.Configuration.DependencyResolver = new NinjectResolver(kernel);}

 

转载地址:http://wmzol.baihongyu.com/

你可能感兴趣的文章
MySQL高级-索引优化
查看>>
SQL中Group By的使用
查看>>
RateLimiter 限流
查看>>
资深设计师Tony Ventrice解析手机游戏开发的四个层次
查看>>
Swift入门篇-结构体
查看>>
Using the Eclipse Jobs-API(转载)
查看>>
GCC编译过程
查看>>
AE intersect、clip的实现
查看>>
图解使用Win8Api进行Metro风格的程序开发一----建立我们的导航架构
查看>>
iOS开发过程中使用Core Data应避免的十个错误
查看>>
I.MX6 wpa_cli 使用
查看>>
windows使用nginx实现网站负载均衡测试实例
查看>>
DotLiquid模板引擎简介
查看>>
5.Flask-Migrate
查看>>
c# 正则表代式的分组和批评模式 .
查看>>
编程之美-3.1-字符串移位包含的问题
查看>>
EPC是什么
查看>>
T-SQL查询进阶--数据集之间的运算
查看>>
【Vegas原创】Linux下unrar安装与配置
查看>>
HDOJ 2095(找出唯一的出现一次的数)
查看>>