zoukankan      html  css  js  c++  java
  • 1.4WEB API 路由配置及参数传输

    在没有添加路由时,webapi 的访问比较恶心,访问的时候是没有接口方法的。如果定义了同样参数的方法,它就傻傻的分不清的,为了解决这个问题,我们加上路由吧。

     这是生成的api帮助文档列表,可以看到下面两个是直到values这一级的,参数一样,只是请求方式不一样。

    接口代码

      /// <summary>
        /// 获取值测试类
        /// </summary>
        [RoutePrefix("api/Values")]
        public class ValuesController : ApiController
        {
            /// <summary>
            /// 获取枚举类型
            /// </summary>
            /// <returns>枚举类型</returns>
            [Route("GETIEnumerable"), HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "value1", "value2" };
            }
    
            /// <summary>
            /// 获取值
            /// </summary>
            /// <param name="id"></param>
            /// <returns></returns>
            // GET api/values/5
            [Route("GETINT"), HttpGet]
            public string Get(int id)
            {
                return "value" + id;
            }
    
            /// <summary>
            ///  从请求体获取内容
            /// </summary>
            /// <param name="product">po</param>
        
            [Route("PostV"), HttpPost]
            public string Post([FromBody]Product product)
            {
                return product.Name + product.id;
            }
    
    
            // PUT api/values/5
            public void Put(int id, [FromBody]string value)
            {
            }
    
            // DELETE api/values/5
            public void Delete(int id)
            {
            }
        }
    
        /// <summary>
        /// 商品
        /// </summary>
        public class Product
        {
            /// <summary>
            /// 名称
            /// </summary>
            public string Name { get; set; }
            /// <summary>
            /// ID
            /// </summary>
            public string id { get; set; }
        }
    

      

    [RoutePrefix("api/Values")]配置路由前缀,它下面的方法都要加上这个api/Values才能访问。
    “api/”这个是保证它是接口地址。
    因为即使在WebApiConfig中注册了默认接口路由
     public static void Register(HttpConfiguration config)
            {
                // Web API 配置和服务
    
                // Web API 路由
                config.MapHttpAttributeRoutes();
    
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
            }
    

      我们用[Route]这个特性的时候也是优先注册的。

    然后通过以前搞的配置测试方法可以看到效果。

    话说这玩意真心方便,跟前端对接直接给个帮助文档地址就好了。呵呵!

  • 相关阅读:
    【题解】2021.3.6 杂题记录
    【题解】雅礼集训 2017 Day7 题解
    【题解】雅礼集训 2018 Day1 题解
    【题解】「WC2018」通道 [*hard]
    【题解】「CTSC2018」暴力写挂 [*hard]
    【题解】CF1485 简要题解
    【题解】「NOI2019」机器人 [*hard]
    制表符的行为
    Error: Permission denied @ apply2files
    text-align 设置 justify 后不生效
  • 原文地址:https://www.cnblogs.com/cvol/p/6836644.html
Copyright © 2011-2022 走看看