设置WebAPI的路由与返回数据类型信息

1、修改API路由

在 项目中有个App_Start文件夹中的WebApiConfig.cs重新设定访问路由

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            //原来的默认路由
            //config.Routes.MapHttpRoute(
            //    name: "DefaultApi",
            //    routeTemplate: "api/{controller}/{id}",
            //    defaults: new { id = RouteParameter.Optional }
            //);
            //修改后的路由
            config.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
修改路由

在项目中Global.asax内引用WebApiConfig中设定好的路由

public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
引用路由

创建控制项目中的Controllers文件夹中新建控制器

设置WebAPI的路由与返回数据类型信息

在新建好的控制器中定义方法

/// <summary>
        /// 用户登陆
        /// </summary>
        /// <param name="postinfo"></param>
        /// <returns></returns>
        [HttpPost]
        public HttpResponseMessage UserLogin([FromBody]string postinfo)
        {
              //方法内的代码
              XXXXXXXXX
             //返回json信息 下面会有定义返回形式,默认为XML方式返回
              return ReturnHttpMessage.HttpMessage(JsonConvert.SerializeObject(user));
        }    
定义方法

PS:必须要在方法头部定义好[HttpPost]或者[HttpGet]、[HttpPut]、[HttpDELETE]的请求方式

设定好路由后访问地址改变为:http://xxx(域名)/api/XXX(控制器)/XXXX(定义的方法)

http://localhost:8035/api/Login/UserLogin

2、修改设定的返回信息方式

在控制器文件(Controllers)中添加个ReturnHttpMessage类

/// <summary>
        /// 返回UTF8格式的json
        /// </summary>
        /// <param name="jsoninfo">json字符串</param>
        /// <returns></returns>
        public static HttpResponseMessage HttpMessage(string jsoninfo) { 
            return new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent(jsoninfo, Encoding.UTF8, "text/json")
                };
        }
View Code

相关推荐