关键词:
1. webApi属于RESTful架构风格, 而RESTful风格, 是以资源为视角来描述服务的
2. 创建webAPI项目
3. 选择webAPI, 然后mvc会自动引用
4. 点击确定, 就创建好一个WebAPI项目, 项目目录如下:
5. 现在就可以尝试访问了:
6. 简单介绍:
a) 此时controller中有两个默认的controller
b) webAPI的访问方式, 这里返回的是xml, 而ie下返回的是 json; 这是由response的返回头决定的, 可以f12看看返回头的定义
7. 在浏览器输入http://localhost:4071/api/values, 请求的过程是什么?
a) 一个网站启动的时候, 第一个启动的肯定是Global.asax文件中的WebApiApplication下面的Application_Start()站启动的时
b) 路由注册:
8. webAPI的运转流程:
1 启动的时候: Application_Start-→WebApiConfig.Register-→把路由规则写入一个容器(routeTable)
2 运行的时候: 请求会去容器匹配--找到第一个满足的控制器--然后按照以下规则去找action(http method):
a 优先查找方法时候标记了特性 [HttpGet], 如果有标记, 则优先找参数最佳匹配的
b 如果都没有有标记[HttpGet]特性, 则找方法以Get开头
c (找方法时)优先参数最匹配 api/values/1--→Get(int id); 也就是说当请求过来的时候, 又能找到以[HttpGet]特性的方法, 又能找到以 Get开头的方法, 那么则使用参数做为最佳匹配
d 如果没有 [HttpGet] 特性, 也没有以 Get开头的方法, 则直接会报错了
9. 基于WebAPI中的普通路由,访问时带来的两个问题:
a) 对一个资源(webAPI中所说的资源可以理解为一条数据)做同一种操作, 可能有多种方式; 比如根据用户Id修改用户密码, 根据用户Id修改用户名称, 根据用户Id修改用户邮箱
b) WebAPI中经常会有版本的问题, 比如在一个values控制器里, 对某个方法进行升级, 表示v1版本, v2版本; 那么如果只使用webAPI的默认路由来调用的话, 就不能区分了
以上两种问题, 只使用webAPI中的默认路由已经办不到了, 所以webAPI又提供了一种特性路由
c) 特性路由的写法:
1 在Global文件的config.MapHttpAttributeRoutes()中写;
2 也可以直接在 控制器下的action上打特性路由标记, 比如 [Route("api/values")](下图) ; 参考 ValuesController.cs 中的路由特性标记
10. 添加控制器:
a) 右键Controllers目录
b) 选择一个控制器类型
c) 命名控制器
d) 等待完成
e) 完成
python语言基础(type创建类)(代码片段)
动态创建类格式:type(类名,由父类组成的元组(针对继承的情况,可以为空),包含属性的字典值) type创建类的案例:Test01=type(‘Test01‘,(),)print(Test01)print(Test01())#运行结果:#<class‘__main__.Test01‘>#<__ma... 查看详情
ubuntukylin基础使用系统设置创建一个普通的用户
镇场文: 学儒家经世致用,行佛家普度众生,修道家全生保真,悟易理象数通变。以科技光耀善法,成就一良心博客。______________________________________________________________________________________________________我的... 查看详情
01_3_创建一个action
01_3_创建一个Action1. 定义一个action具体视图的返回可以由用户自己定义的Action来决定具体的手段是根据返回的字符串找到相应的配置项,来决定视图的内容具体Action的实现可以是普通的java类,里面有publicStringexecute()方法即可... 查看详情
mysql5基础创建一个只允许本地登陆的用户
镇场文: 学儒家经世致用,行佛家普度众生,修道家全生保真,悟易理象数通变。以科技光耀善法,成就一良心博客。______________________________________________________________________________________________________Operat... 查看详情
chapter16_3多重继承
...一个类可以有多个基类。因此无法使用一个类中的方法来创建子类,而是需要定义一个特殊的函数来创建。它的参数表示新类的所有基类。创建时它会设置元表中的__index元方法。而多重继承正是在这个__ 查看详情
mysql5.7基础创建一个新的数据库
镇场文: 学儒家经世致用,行佛家普度众生,修道家全生保真,悟易理象数通变。以科技光耀善法,成就一良心博客。______________________________________________________________________________________________________Operat... 查看详情
面向对象之继承
面向对象的三大特征:一、继承:定义:继承是创建新类的方式,新建的类可以继承一个或多个父类(python中支持多继承)。继承分为单继承(继承一个父类)和多继承(继承多个父类)为什么要用继承:在程序中,通过继承,... 查看详情
在创建派生类型之前确保至少存在一个基类实例
】在创建派生类型之前确保至少存在一个基类实例【英文标题】:Makingsureatleastoneinstanceofabaseexistsbeforecreatingaderivedtype【发布时间】:2017-01-1619:54:12【问题描述】:看似简单的事情一直是我当前的绊脚石。我有简单的继承,但我... 查看详情
qt_第一个代码01
#include<QApplication>#include<QWidget>//窗口控制基类#include<QPushButton>//添加按钮头文件intmain(intargc,char**argv){ QApplicationapp(argc,argv); QWidgetw;//标题w w.setWindowTitle(QString("水泡学堂 查看详情
java(01)__java基础
1.Java基础1.1.第一个Java程序publicclassHello{publicstaticvoidmain(Stringargs[]){System.out.println("Hello,world!");}}1.其语和C语言类似,这里注意main函数的参数与C不同,打印语句使用System.out.println,使用+分隔需要打印的内容;2.在文件命名上,文件... 查看详情
『线性空间整数线性基和异或线性基』(代码片段)
...中(a,b)为向量(2.)标量乘法(k*a),其中(a)为向量,(k)为常数基础概念(1.)给定若干个向量(a_1,a_2,...,a_n),若向量(b)能够通过(a_1,a_2,...,a_n)经过向量加法和标量乘法得到,则称向量(b)能够通过(a_1,a_2,...,a_n)表出。(2.)对于向量(a_1,a_2,...,a_n)... 查看详情
使用一个接口,并告诉它所有实现者_将_也_从一个公共基类继承
】使用一个接口,并告诉它所有实现者_将_也_从一个公共基类继承【英文标题】:Usinganinterface,andtellingitallimplementors_willalso_inheritfromacommonbaseclass【发布时间】:2013-09-1321:29:30【问题描述】:有时,您发明了一个接口来表示某种类... 查看详情
3.2面向对象基础语法(代码片段)
面向对象基础语法目标dir内置函数定义简单的类(只包含方法)方法中的self参数初始化方法内置方法和属性01.dir内置函数(知道)在Python中对象几乎是无所不在的,我们之前学习的变量、数据、函数都是对象在Python中可以使用... 查看详情
01_基础知识
【进程概念】操作系统中所有运行中的任务通常是一个程序,每个运行中的程序就是一个进程(Process),当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。进程是处于运行过程中的程序,并... 查看详情
01django基础(代码片段)
目录一、什么是web框架?二、MVC和MTV模式三、Django基本命令四、pycharm创建Django项目回到顶部一、什么是web框架?框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特... 查看详情
零基础逆向工程39_win32_13_进程创建_句柄表_挂起方式创建进程
1进程的创建过程打开系统-->双击要运行的程序-->EXE开始执行步骤一:当系统启动后,创建一个进程:Explorer.exe(也就是桌面进程)步骤二:当用户双击某一个EXE时,Explorer进程使用CreateProcess函数创建被双击的EXE,也就是说,... 查看详情
2015黑马安卓52期基础+就业+项目+实战高清完整版
day01_Android应用开发-快速入门 01_网络制式的概念02_android简单历史03_Android体系结构04_JVM和DVM的区别05_下载SDK06_SDK目录结构07_模拟器的创建08_创建部署Android项目09_Android项目目录结构10_清单文件11_应用安装过程12_DDMS的使用13... 查看详情
01_对象的创建方法
在平时的JS编码中,我们经常要创建一个对象,创建一个对象的方法有很多种,每一种方法都有自己的优缺点,这里全面剖析一下创建对象常用的6种方法,以及罗列他们的优缺点以供选择。1.Object构造函数的方法;2.对象字面量... 查看详情