ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:158.20KB ,
资源ID:19325406      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19325406.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(WebAPI从入门到精通Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

WebAPI从入门到精通Word文档下载推荐.docx

1、2 name: DefaultApi,3 routeTemplate:api/controller/id4 defaults: new id = RouteParameter.Optional 5 );可以看到,默认路由使用的固定的api作为Uri的先导,按照微软官方的说法,用于区分普通Web请求和WebService的请求路径:可以看到,默认的路由规则只指向了Controller,没有指向具体的Action,因为默认情况下,对于Controller中的Action的匹配是和Action的方法名相关联的:具体来说,如果使用上面的路由规则,对应下面的Controller:public class

2、 UserController : ApiController public List allModeList = new List() new UserModel() Id=1,UserName=zhang, PassWord=123, new UserModel() Id=2,UserName=lishi123456 new UserModel() Id=3,UserName=wang1234567 ; /Get api/User/ public IEnumerable return m.Id = id; ); /POST api/User/ public bool PostNew(Use

3、rModel user) try allModeList.Add(user); return true; catch return false; /Delete api/User/ public int DeleteAll() return allModeList.RemoveAll(mode) = return true; /Delete api/User/1 public int DeleteOne(int id) return allModeList.RemoveAll(m) = /Put api/User public int PutOne(int id, UserModel user

4、) List return mode.Id = id; foreach (var mode in upDataList) mode.PassWord = user.PassWord; mode.UserName = user.UserName; return upDataList.Count; 则,会有下面的对应关系: URL HttpMethod 对应的Action名 /api/User GET GetALL /api/User/1 GET GetOne /api/User POST PostNew /api/User/1 DELETE DeleteOne /api/User DELETE

5、DeleteALL /api/User PUT PutOne(5)客户端JS调用 function getAll() $.ajax( url:api/User/ type: GET success: function (data) document.getElementById(modes).innerHTML = ; $.each(data, function (key, val) var str = val.UserName + : + val.PassWord; $(, html: str ).appendTo($(#modes); ).fail( function (xhr, text

6、Status, err) alert(Error: + err);function find() api/User/1 , function add() POST dataType:json data: Id4,UserNameadmin, PassWord666666 getAll(); function removeUser() api/User/3DELETE function removeAll() function udpate() PUT Id: 1, ,这样就实现了最基本的CRUD操作。扩展需求问题1:我想按照用户名称(UserName)进行查询,怎么办?办法:在UserCont

7、roller类中加一个方法名称叫:GetUserByName,如下所示: public UserModel GetUserByName(string userName) return allModeList.Find(m) = return m.UserName.Equals(userName);在客户端index.cshtml中调用 function getUserByName() api/User/zhang var str = data.UserName + + data.PassWord;如果URL是:,将会报错:Bad Request原因是他会自动调用我们的GetOne(int id

8、) 这个方法,类型转换出错解决办法:改变URL为:api/User/?userName=zhang问题2:我想按用户名称(UserName) 和用户密码(PassWord)一起来进行查询,怎么办?解决办法UserController类中,可以重载一个GetUserByName的方法,如下所示:客户端调用: url:userName=zhang&passWord=123, /这里尤其需要注意(6)路由规则扩展和普通的MVC一样,MVC WebAPI支持自定义的路由规则,如:在上面的操作中,路由规则使用则限定了使用GET方式利用URL来传值时,controller后面的接收参数名为id,但是在Co

9、ntroller中,如果GetOne方法的接收参数名为key,是不会被匹配的,这是只需要新增一个新的路由规则,或修改原先的路由规则为:api/controller/key,如下所示: config.Routes.MapHttpRoute( name: routeTemplate: defaults: new key = RouteParameter.Optional );当然,可以对路由进行更深的扩展,如:扩展成和普通MVC一样的路由:api/controller/action/id这样,就要求同时使用Action和HTTP方法进行匹配当然,根据微软的说法,这种使用是不被推荐的,因为这不符合大

10、家对WebService的一般认知:(7)使用Attribute声明HTTP方法 HttpGetTestUseMode FindAll() FindByKey(string key) HttpPost public bool Add(TestUseMode mode) HttpDelete public int RemoveByKey(string key) public int RemoveAll() HttpPut public int UpdateByKey(string key, string value) NonAction public string GetPrivateData(

11、)当然,我只列出了方法名,而不是这些方法真的没有方法体.方法体是不变的,NoAction表示这个方法是不接收请求的,即使以GET开头。如果感觉常规的GET,POST,DELETE,PUT不够用,还可以使用AcceptVerbs的方式来声明HTTP方法,如:AcceptVerbs(MKCOLHEAD)public int UpdateByKey(string key, string value) if (mode.ModeKey = key) return true; foreach(var mode in upDataList) mode.ModeValue = value;附:什么是REST

12、风格? 参考:什么是REST风格hi.baidu./yankaiwei/item/1f0b37dd922d53ef3cc2cb69第二部分:综合示例:应用ASP.NET MVC4+WebAPI+FluentData开发Web应用创建数据库NorthWind数据库的Customers表Create DataBase NorthWindGoUse NorthWindCREATE TABLE dbo.Customers( CustomerID nchar(5) NOT NULL, CompanyName nvarchar(40) NOT NULL, ContactName nvarchar(30)

13、NULL, ContactTitle nvarchar(30) NULL, Address nvarchar(60) NULL, City nvarchar(15) NULL, Region nvarchar(15) NULL, PostalCode nvarchar(10) NULL, Country nvarchar(15) NULL, Phone nvarchar(24) NULL, Fax nvarchar(24) NULL, CONSTRAINT PK_Customers PRIMARY KEY CLUSTERED ( CustomerID ASC)WITH (PAD_INDEX =

14、 OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGO创建 FluentData.Entity层,创建Customer实体类namespace FluentData.Entity public class Customer public string CustomerID get; public string CompanyName get; public string ContactName g

15、et; public string ContactTitle get; public string Address get; public string City get; public string Region get; public string PostalCode get; public string Country get; public string Phone get; public string Fax get;第三步:利用FluentData做数据的持久化首先引入FluentData.cs (见附件)其次:创建DBHelper类,代码如下: public class DBH

16、elper public static IDbContext Context() /return new DbContext().ConnectionString(server=127.0.0.1;uid=sa;pwd=sa;database=TestDB, new SqlServerProvider(); return new DbContext().ConnectionStringName(connString然后不要忘记修改ASP.NET MVC层所在的Web.config,加入数据库连结字符串: add name= connectionString=database=Northwind

17、;/connectionStrings创建 CustomerService数据持久化类,代码如下:public class CustomerService private IDbContext context = DBHelper.Context(); public Customer Select(string customerId) return context.Select(*).From(Customers).Where(CustomerID=0).Parameters(customerId) .QuerySingle(); SelectAll() ).QueryMany(); SelectAll(string sortEx

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1