ASP.NET WebApi 路由配置
来源:互联网 发布:下载软件的软件有哪些 编辑:程序博客网 时间:2024/05/18 02:42
WebApi相关文章:
- C# 搭建一个简单的Web API项目
- C# WebApi 路由配置
- c# WebApi之解决跨域问题:Cors
- c# WebApi之身份验证:Basic基础认证
- c# WebApi之接口返回类型详解
一、模板路由
1、在App_Start文件夹下面的WebApiConfig,默认路由配置为:
using System;using System.Collections.Generic;using System.Linq;using System.Web.Http;namespace testAPI{ 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.EnableSystemDiagnosticsTracing(); } }}
url:api/{controller}/{id}
2、在控制器里面添加一个get请求:
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Http;using System.Web.Http;namespace testAPI.Controllers{ public class ValuesController : ApiController { [HttpGet] public string Get1() { return "value1"; } }}
3、启动项目,浏览器测试:
可以看到通过get请求获取到了数据
4、在控制器里面再添加一个get请求:
public class ValuesController : ApiController { [HttpGet] public string Get1() { return "value1"; } public string Get2() { return "value2"; } }
启动项目,浏览器测试:
我们发现发生错误:找到了与该请求匹配的多个操作
那要怎么处理呢,把第二个方法改成post请求:
public class ValuesController : ApiController { [HttpGet] public string Get1() { return "value1"; } [HttpPost] public string Get2() { return "value2"; } }
测试请求:
可以正确获取到数据,且如果是post请求返回Get2的信息,如果是get请求返回Get1的信息;
从上面两个测试我们可以得出如下结论:
当多个action的 请求方式一样的话,在默认路由模板下(没有action),将会匹配多个操作。 基于上面两点结论,默认路由模板无法满足针对一种资源一种请求方式的多种操作。
5、自定义一个路由:
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); //自定义路由:匹配到action config.Routes.MapHttpRoute( name: "ActionApi", routeTemplate: "actionapi/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); config.EnableSystemDiagnosticsTracing(); } }
控制器方法:
public class ValuesController : ApiController { public string Get1() { return "value1"; } public string Get2() { return "value2"; } }
测试:
请求http://localhost:26753/actionapi/values返回404错误;
请求http://localhost:26753/actionapi/values/get1返回Get1的信息;
请求http://localhost:26753/actionapi/values/get2返回Get2的信息;
通过定制路由模板我们可以得出如下结论:
通过在路由模板中增加action目录,对资源的定位直接作用到action上。 多个HttpGet方法可以共存于一个controller中。
二、特性路由
特性路由主要处理一些比较复杂的请求url,如资源之间存在嵌套关系:客户包含订单,书有作者属性等等。对于这种Uri,我们希望的路由是这样的:/costomers/{customerid}/orders 或 /costomers/{customerid}/orders/{orderid}
考虑到这只是某个Controller的路由格式,而我们会有很多个Controller,用基于约定路由显然不合适(要配置很多的路由)
使用特性路由就简单了,在action上加一个特性即可
[Route("customers/{productId}/orders")]public string getProductName(int productId){ return "name";}
使用特性路由需要在WebApiConfig中添加config.MapHttpAttributeRoutes();
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.MapHttpAttributeRoutes(); ... } }
- ASP.NET WebApi 路由配置
- ASP.NET WebApi 路由配置
- ASP.NET WebApi 路由配置
- ASP.NET 路由配置
- 给ASP.NET MVC及WebApi添加路由优先级
- 在ASP.NET MVC中使用WebApi注册路由注意事项
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- 配置Asp.Net MVC WebAPI可跨域方法
- ASP.NET WebApi 跨域请求配置
- ASP.NET MVC路由配置
- ASP.NET MVC路由配置
- Asp.Net MVC 路由配置
- ASP.NET WEBApi
- Asp.net WebAPI Ioc
- Asp.net WebAPI 单元测试
- Volatile与Synchronized分析
- ZkShell 命令详解
- MyBatis代码生成工具mybatis-generator在Myeclipse10中的使用
- 数据库读写分离及问题
- 行人属性“Attribute Recognition by Joint Recurrent Learning of Context and Correlation”
- ASP.NET WebApi 路由配置
- Android自定义控件1----基本思路
- IE 兼容性问题
- scrapy中设置log
- Python-UiAutomator使用介绍
- IOC的深入理解
- POJ_Dynamic Median 数据流的中位数
- 单点登录原理与简单实现
- Android 虚拟机 — .dex 文件格式