创建一个LoginViewModel类

using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 namespace Demo.Models
7 {
8 public class LoginViewModel
9 {
10 public string LoginName { get; set; }
11 public string LoginPwd { get; set; }
12 }
13 }
复制代码
第二步:创建User控制器

可以看到有一个[RoutePrefix]的标识,实际上之所以能够标识也是一个特性类的作用,并且我写了一个"api/User"的参数。

这个参数有啥用呢?

我在Login方法上也做了一个[Route]的标识,注意在请求时要与[Route]设置的名称为主,不能和方法名为主!!!

这两个组合在一起就成了一个完整的路由,在调用时,可以手动根据我们自己创建的路由规则去调用后台的数据。

上一篇文章中存在RESTful语义化风格的Get、post等必须要加方法名Get作为前缀,不然无法访问。。。

在这里通过自定义路由规则就可以解决这个“死板”的问题了。。

复制代码
1 using Demo.Models;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Net;
6 using System.Net.Http;
7 using System.Web.Http;
8
9 namespace Demo.Controllers
10 {
11 //WebApi:只管处理数据
12
13 //在控制器上方加一个路由前缀来确定请求的一个控制器 RoutePrefix Prefix意为前缀
14 [RoutePrefix(“api/User”)]
15 public class UserController : ApiController
16 {
17 //此处没有Restful风格语义化 所以需要自己手动指定此处需要什么样的请求
18 [HttpPost]
19 //定义一个路由名称为 Login,即RouteName,这时,它会和前缀组合成一个完整的路由
20 [Route(“Login”)]
21 public string Login(LoginViewModel model)
22 {
23 return “Ok”;
24 }
25 [HttpGet]
26 [Route(“Messages”)]
27 public IHttpActionResult GetMessage()
28 {
29 return Ok(new Student() {
30 Id=80,
31 Name=“及格了”
32 });
33 }
34
35 }
36
37 }
复制代码
例如:

Html代码段部分:

这里我就只写ajax部分的代码了,其他Html标签就不多赘述了。。。

主要是看url请求的地址:/api/User/Login

复制代码
1

在这里创建了一个学生类:

复制代码
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 namespace Demo.Models
7 {
8 public class Student
9 {
10 public int Id { get; set; }
11 public string Name { get; set; }
12 }
13 }
复制代码
那怎么去理解IHttpActionResult呢?

IHttpActionResult:可以看到它是一个接口,接口代码:返回结果是HttpResponesMessage的任务。我可不可以认为这是后台数据在传递到客户端是,返回的状态码?一个状态码代表一个返回结果。

比如

return Ok() 状态码:200

NotFound() 状态码:404

return InternalServerError(new Exception(“你错了”)) 状态码:500

实际上这些方法都只能在IHttpActionResult中实现的。

想想接口中一般是有一个类,几个方法

如果需要验证的话可以去试试F12看看NetWork里面是否该方法对应了自己的状态码

正是该方法实现了该接口,所有才可以进行处理。

那么这里需要注意的是只有 Return Ok(),才能带数据到客户端。。。

复制代码
1 using System.Net.Http;
2 using System.Threading;
3 using System.Threading.Tasks;
4
5 namespace System.Web.Http
6 {
7 //
8 // 摘要:
9 // 定义一个用于以异步方式创建 System.Net.Http.HttpResponseMessage 的命令。
10 public interface IHttpActionResult
11 {
12 //
13 // 摘要:
14 // 以异步方式创建 System.Net.Http.HttpResponseMessage。
15 //
16 // 参数:
17 // cancellationToken:
18 // 要监视的取消请求标记。
19 //
20 // 返回结果:
21 // 在完成时包含 System.Net.Http.HttpResponseMessage 的任务。
22 Task ExecuteAsync(CancellationToken cancellationToken);
23 }
24 }
复制代码
User控制器:在这里的请求方式是Get,因为做了一个[HttpGet]的标识

复制代码
1 using Demo.Models;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Net;
6 using System.Net.Http;
7 using System.Web.Http;
8
9 namespace Demo.Controllers
10 {
11 //WebApi:只管处理数据
12
13 //在控制器上方加一个路由前缀来确定请求的一个控制器 RoutePrefix Prefix意为前缀
14 [RoutePrefix(“api/User”)]
15 public class UserController : ApiController
16 {
17 //此处没有Restful风格语义化 所以需要自己手动指定此处需要什么样的请求
18 [HttpPost]
19 //定义一个路由名称为 Login,即RouteName,这时,它会和前缀组合成一个完整的路由
20 [Route(“Login”)]
21 public string Login(LoginViewModel model)
22 {
23 return “Ok”;
24 }
25 [HttpGet]
26 [Route(“Messages”)]
27 public IHttpActionResult GetMessage()
28 {
29 return Ok(new Student() {
30 Id=80,
31 Name=“及格了”
32 });
33 }
34
35 }
36 }
亚马逊测评 www.yisuping.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值