- 打开VS,下面以C#为例,选择ASP.NET Web
- 有一下模板,假如选择“Web API”,发现底会勾选两个,连MVC也勾选上。
- 假如用这个模板,会生成很多代码,并强制使用MVC,为了学习更加清楚WebAPI每个模块的功能,这里新建一个Empty空的WebApi
- 确定生成简单模板
- 新建一个Person控制器。这里根据实际业务需求新建。为了演示用,这里先用Person 人类来做。
- 在这个Person类下新建三个函数
- 第一个没有任何参数
- 第二个有个整型参数
- 第三个有个字符串参数
public string[] Get()
{
return new string[] { "huang", "hai", "nihao" };
}
public string Get(int id)
{
return "haha" + id;
}
public int Get(string name)
{
return name.Length;
}
- 运行此程序,它会用浏览器打开
- 运行
-
- 发现打开出现错误,因为路由没有配置好
-
- 打开App_Start文件夹下的WebApiConfig.cs来查看路由,路由方式是api/{controller}/{id}
api表示地址后面多加一个api
{controller}表示这里填入新建控制器的名称,即5(b)中输入的名称
{id}表示参数
-
- 在再浏览器中按以上格式输入:发现调用的是第一个函数,因为这个地址中没有输入任何参数,根据函数的重载原理,它自动会调用第一个无参数的函数
http://localhost:18123/api/Person
-
- 浏览器中输入:发现调用的是第二个函数,因为输入参数为id=1
http://localhost:18123/api/Person?id=1
-
- 浏览器中输入:发现调用的是第三个函数,因为输入参数为nane=hhik
http://localhost:18123/api/Person?nane=hhik
- 上面三个函数体都是同步执行的,可以声明异步执行的函数。格式如下:
public async Task<string> GetBaidu(int age)
{
HttpClient hc = new HttpClient();
string txt = await hc.GetStringAsync("https://www.baidu.com/");
return txt;
}
- 上面的函数返回是一个简单的数据类型,也可以返回一个对象 ,以下例子
- 返回对象
- 新建一个mPerson类,新建类一般在Models文件夹中
- 新建函数让其返回对象
public mPerson Get(double kk)
{
mPerson P1 = new mPerson();
P1.Id =8;
P1.Name = "huang";
return P1;
}
- 访问地址:http://localhost:18123/api/Person?kk=5
- 结果:
以上都是在浏览器中访问的,但实际项目中不可能在浏览器访问,而是在其他项目中访问。
- 调用总结
- WebApi中调用跟函数名称没关系,主要根据参数名称来判断,所以函数名称不可以一样(出来用Get等特殊关键字来做函数名),参数名称以及参数个数是也不可以一样。
- 调用时,只需要写参数名称,不需要写函数名称
- 当参数名一样时,编译器不会报错,调用时会报错:
- 函数名一样,编译器直接报错
三、在其他项目中访问