• 关于Web API的个人理解


    Web Api的调用主要有四种, Get(获取)、Post(新增)、Delete(删除)、Put(更新)

    路由定义常用的两种方式

    方法1

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

    方法2

    1           config.Routes.MapHttpRoute(
    2                name: "DefaultApi2",
    3                routeTemplate: "api/{controller}/{action}/{id}",
    4                defaults: new { id = RouteParameter.Optional });

    以如下函数为例

    1

     1  public Model GetModel(int id)
     2         {
     3 
     4             var model = _modelRepository.GetItem(id);
     5             if (model == null)
     6             {
     7                 throw new HttpResponseException(HttpStatusCode.NotFound);
     8             }
     9             return model;
    10         }

    2

     1  public IEnumerable<Model> GetModels()
     2         {
     3             var models= _modelRepository.GetAll().ToList();
     4             var functions = _functionRepository.GetAll().ToList();
     5             foreach (var model in models)
     6             {
     7                 model.Functions = functions.Where(f => f.SubModelID == model.ModelID);
     8             }
     9             return models;
    10         }

    3

       public IEnumerable<Model> GetModels(int asd,int mmm)
            {
            
                return _modelRepository.GetAll().Where(c => c.ModelID == asd).ToList();
            }

    方法1 函数1 : http://localhost:18264/api/Model/2

            函数2 : http://localhost:18264/api/Model/

            函数3 : http://localhost:18264/api/Model?asd=2&mmm=3(这里是有多个参数的情况)

    方法2 函数1 : http://localhost:18264/api/Model/GetItem/2

            函数2 : http://localhost:18264/api/Model/GetModels

            函数3 : http://localhost:18264/api/Model/GetModels?asd=2&mmm=3(这里是有多个参数的情况)

    个人补充

    1.注意 id = RouteParameter.Optional 设置默认值的时候我们没有给ID设置因此 函数2才能找到无参数的GetModels方法 如果设置id默认值为2 那么http://localhost:18264/api/Model/ 就会定位到model2

    2.Action代表着方法名,id代表着参数名,为什么会有方法2,在方法1没有不足以满足需求的时候可以考虑方法2,比如函数名不一样,但是参数一样 HTTP请求都是Get 需要采用方法2进行路由定义

    3.注册过程

    一 注册

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

    二 建立Controller

     1 public class ModelController:ApiController 2 { 3 } 

    三 建立参数仓库

     1 public class FunctionRepository:IRepository<Function> 

    即可

  • 相关阅读:
    leetcode刷题总结401-450
    leetcode刷题总结351-400
    马哥博客作业第六周
    马哥教育第一阶段考试
    马哥博客作业第四周
    马哥博客作业第三周
    马哥博客作业第二周
    马哥博客作业第一周
    马哥博客预习作业第三周
    马哥博客预习作业第二周
  • 原文地址:https://www.cnblogs.com/guofu/p/5268653.html
Copyright © 2020-2023  润新知