问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

asp.net mvc3 项目怎么开发API接口?

发布网友 发布时间:2022-04-22 20:50

我来回答

1个回答

热心网友 时间:2022-04-13 08:55

Visual Studio为我们提供了专门用于创建ASP.NET Web API应用的项目模板,借助于此项目模板提供的向导,我们可以“一键式”创建一个完整的ASP.NET Web API项目。在项目创建过程中,Visual Studio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用。

对于IDE提供的这种旨在提高生产效率的自动化机制,我个人自然是推崇的,但是我更推荐读者朋友们去了解一下这些自动化机制具体为我们做了什么?做这些的目的何在?哪些是必需的,哪些又是不必要的?正是基于这样的目的,在接下来演示的实例中,我们将摒弃Visual Studio为我们提供的向导,完全在创建的空项目中编写我们的程序。这些空项目体现在如右图所示的解决方案结构中。
如右图所示,整个解决方案一共包含6个项目,上面介绍的作为“联系人管理器”的单页Web应用对应着项目WebApp,下面的列表给出了包括它在内的所有项目的类型和扮演的角色。
·Common:这是一个空的类库项目,仅仅定义了表示联系人的数据类型而已。之所以将数据类型定义在独立的项目中,只要是考虑到它会被多个项目(WebApi和ConsoleApp)所使用。
WebApi:这是一个空的类库项目,表现为HttpController类型的Web API就定义在此项目中,它具有对Common的项目引用。
WebHost:这是一个空的ASP.NET Web应用,它实现了针对ASP.NET Web API的Web Host寄宿,该项目具有针对WebApi的项目引用。
SelfHost:这是一个空的控制台应用,旨在模拟ASP.NET Web API的Self Host寄宿模式,它同样具有针对WebApi的项目引用。
WebApp:这是一个空的ASP.NET Web应用,代表“联系人管理器”的网页就存在于该项目之中,至于具体的联系人管理功能,自然通过以Ajax的形式调用Web API来完成。
ConsoleApp:这是一个空的控制台应用,我们用它来模拟如何利用客户端代理来实现对Web API的远程调用,它具有针对Common的项目引用。
二、定义Web API
在正式定义Web API之前,我们需要在项目Common中定义代表联系人的数据类型Contact。简单起见,我们仅仅为Contact定义了如下几个简单的属性,它们分别代表联系人的ID、姓名、联系电话、电子邮箱和联系地址。
1: public class Contact
2: {
3: public string Id { get; set; }
4: public string Name { get; set; }
5: public string PhoneNo { get; set; }
6: public string EmailAddress { get; set; }
7: public string Address { get; set; }
8: }

表现为HttpController的Web API定义在WebApi项目之中,我们一般将ApiController作为继承的基类。ApiController定义在“System.Web.Http.dll”程序集中,我们可以在目录“%ProgramFiles%\Microsoft ASP.NET\ASP.NET Web Stack 5\Packages\”中找到这个程序集。具体来说,该程序集存在于子目录“Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45”中。
Web API体现在如下所示的ContactsController类型中。在该类型中,我们定义了Get、Post、Put和Delete这4个Action方法,它们分别实现了针对联系人的查询、添加、修改和删除操作。Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。由于ASP.NET Web API默认实现了Action方法与HTTP方法的映射,所以方法名也体现了它们各自所能处理请求必须采用的HTTP方法。
1: public class ContactsController: ApiController
2: {
3: static List<Contact> contacts;
4: static int counter = 2;
5:
6: static ContactsController()
7: {
8: contacts = new List<Contact>();
9: contacts.Add(new Contact { Id = "001", Name = "张三",
10: PhoneNo = "0512-12345678", EmailAddress = "zhangsan@gmail.com",
11: Address = "江苏省苏州市星湖街328号" });
12: contacts.Add(new Contact { Id = "002", Name = "李四",
13: PhoneNo = "0512-23456789", EmailAddress = "lisi@gmail.com",
14: Address = "江苏省苏州市金鸡湖大道328号" });
15: }
16:
17: public IEnumerable<Contact> Get(string id = null)
18: {
19: return from contact in contacts
20: where contact.Id == id || string.IsNullOrEmpty(id)
21: select contact;
22: }
23:
24: public void Post(Contact contact)
25: {
26: Interlocked.Increment(ref counter);
27: contact.Id = counter.ToString("D3");
28: contacts.Add(contact);
29: }
30:
31: public void Put(Contact contact)
32: {
33: contacts.Remove(contacts.First(c => c.Id == contact.Id));
34: contacts.Add(contact);
35: }
36:
37: public void Delete(string id)
38: {
39: contacts.Remove(contacts.First(c => c.Id == id));
40: }
41: }

简单起见,我们利用一个静态字段(contacts)表示存储的联系人列表。当ContactsController类型被加载的时候,我们添加了两个ID分别为“001”和“002”的联系人记录。至于实现联系人CRUD操作的Action方法,我们也省略了必要的验证,对于本书后续的演示的实例,我们基本上也会采用这种“简写”的风格。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长期借款的会计分录到底怎么做啊,详细讲 高考作文可以查吗? 手机屏幕出现一条白色亮线 马铃薯和番茄嫁接能够做到上长番茄,地里长马铃薯吗? 马铃薯的根和番茄的茎可以嫁接吗 有没有上面能结番茄而下面能结马铃薯的植物吗? 美国公立高中申请条件是什么? 美国公立高中留学申请条件 2012年1月网签现不想继续在公司做了,学校在6月底办理毕业手续时我的派遣... 应届毕业生,现在网签了一单位a,但是毕业后不想去了,,,档案还没派遣... asp.net MVC 怎么查询数据库并把数据显示到网页上 求给出代码和引用 谢... 求2本ASP经典模块的两本电子书 ASP网站68个典型模块精解 ASP经典模块开发大全 要完整版的,最好pdf格式的 asp.net mvc,C#, 一个学生管理系统,这个页面数据,在另一个页面看到数据... 编写一个asp.net网站的时候,其中一个页面的编写思想框架。即先写什么,再写什么。 ASP.NET(C# MVC)网站中的后台管理部分怎么做? 想要做黄金投资,该如何选择靠谱的平台进行操作? 黄金投资需要具备哪些条件?具体要如何投资? 银行的金条怎么买? 黄金怎么卖出去划算? 苹果手机锁定屏幕“不显示时间”怎么设置? 新手应该如何进行黄金投资啊,求助。 苹果手机时间显示不对怎么办? 我想请问一下,如何在银行购买黄金呢? 苹果手机锁定屏幕不显示时间怎么设置? 如何进行黄金投资理财? 个人投资黄金的方式有哪些?新手如何选择? 苹果手机时间没了,怎么弄出来? 怎么投资现货黄金? 如何做好黄金投资理财? iPhone手机主屏最上方的时间显示没了? asp.net C# 网站开发 怎么为每个用户动态生成一个固定url 房贷等额本金和等额本息,到底哪个好? 房贷等额本金和等额本息哪个更划算? 贷款买房是用等额本金划算还是等额本息?合算。 房贷本额本息和等额本金哪个更合算? 买房子贷款还贷方式是等额本金划算还是等额本息划算? 还房贷是等额本息划算还是等额本金划算? 房贷等额本金和等额本息哪个划算? 贷款买房选择等额本息和等额本金哪个更好? 房贷20年计划提前还款,等额本金和等额本息哪个划算呢,提前几年还完贷款... 等额本息和等额本金哪个更划算? 风扇上很多油渍,用什么易清洗? 手机主板换了,手机里面的内容还保存吗 电风扇脏了,有什么不用拆卸就能清洗的小妙招吗? 急,!怎样清除电脑风扇的油。? 请问电风扇的塑料外壳上沾满了油烟油污应该怎样清洗? 有办法迅速解决电风扇上面的油污? 艾美特电风扇怎么拆下来清洗? 怎么进入有限权的好友空间 QQ空间非好友空是不是不能进