< 返回新闻公共列表
云南大王-初始WebApi(2)
发布时间:2020-04-16 00:00:00
第一部分主要介绍了什么是WebApi,以及它是干什么的,怎么去调用后台数据等等。。。
今天就继续来学习一个新的知识。在上一篇文章中主要是介绍了一下如何根据根据Ajax去调用后台增删改查的数据。
那么,难道我们只能针对一个表的数据进行增删改查的数据吗?比如我们要进行一个登陆操作,上传照片等等。。。改怎么去实现某一特定的业务需求呢?
第一步:创建一个LoginViewModel类
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 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