20181124_webapi基础01_创建一个基础的webapi项目

无止境 无止境     2022-11-24     556

关键词:

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.对象字面量... 查看详情