ASP.NET MVC WEB API必知必会知识点总结

简介:

 一、理解WEB API:提供基于RESTful架构的WEB服务,通过HTTP请求方法(GET, PUT, POST, DELETE)映射到服务器端相应的ACTION方法(CRUD)。

RESTful架构:

(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。


HTTP 的四个主要方法 (GET, PUT, POST, DELETE) 按照下列方式映射为 CURD 操作:

GET 用于获取 URI 资源的进行展示, GET 操作不应对服务端有任何影响; 

PUT 用于更新 URI 上的一个资源, 如果服务端允许, PUT 也可以用于新建一个资源; 
POST 用于新建 资源, 服务端在指定的 URI 上创建一个新的对象, 将新资源的地址作为响应消息的一部分返回; 
DELETE 用于删除指定的 URI 资源。

二、WEB API特点:

1.CONTROL类继承自ApiController抽象类;

2.注册路由时一般无需指定ACTION节点,ACTION方法名称一般都包含HTTP请求方法名名称,路由系统通过HTTP请求方法自动寻找与之相应的ACTION方法并执行;

3.ACTION方法返回值一般为:JSON、XML或一般值对象

三、实现发送GET, PUT, POST, DELETE HTTP请求方法

1.通过JQUERY.AJAX方法指定TYPE类型来实现GET, PUT, POST, DELETE HTTP请求方法; 

2.直接访问URL或将表单的METHOD方法设为GET,则可实现GET  HTTP请求方法;

3.将表单的METHOD方法设为POST,则可实现POST  HTTP请求方法;

4.PUT、DELETE除第一种方法外,只能通过先在服务端重写HTTP请求方法(自定义HttpMessageHandler来实现),然后再在客户端请求报文头指定“X-HTTP-Method-Override

”值为PUT或DELETE来实现;具体实现方法详见:如果调用ASP.NET Web API不能发送PUT/DELETE请求怎么办? 

5.在注册WEB API路由规则时指定ACTION节点;

 四、WEB API请求与服务端处理实现方法:

1.GET ALL方法:

客户端:

1
2
3
4
5
6
7
8
9
10
$( "#Button1" ).click( function  () {
                $.getJSON( "@Url.Content(" ~/api/values ")" function  (data) {
                    var  rs =  "" ;
                    $.each(data,  function  () {
                        rs +=  this  "," ;
                    })
                    alert(data);
                    showResult(rs);
                })
    });

服务器端:

1
2
3
4
5
// GET api/values
public IEnumerable<string> Get()
{
     return  new  string[] {  "value1" "value2"  };
}

2.GET ONE方法:

客户端:

1
2
3
4
5
6
$( "#Button2" ).click( function  () {
     $.getJSON( "@Url.Content(" ~/api/values/5 ")" function  (data) {
         alert(data);
         showResult(data);
     })
});

服务器端:

1
2
3
4
5
// GET api/values/5
public string Get(int id)
{
     return  "value is "  + id.ToString();
}

3.POST CREATE方法:(注意以下客户端中的第几种方法就对应服务器端的第几种方法)

客户端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//第一种:
$( "#Button1" ).click( function  () {
                 $.post( "@Url.Content(" ~/api/values ")" , {name: 'zwj' ,age:29}, function  (data) {
                     alert(data);
                     showResult(data);
                 })
             });
 
//第二种:
  $( "#Button3" ).click( function  () {
                 $.ajax( "@Url.Content(" ~/api/values/1 ")" , {
                     type: 'post' ,
                     data:JSON.stringify({ name:  'zwj' , age: 29 }),
                     contentType:  'application/json' ,
                     //dataType: 'json',
                     success:  function  (result, status, xhr) {
                         alert(result);
                         showResult(result);
                     }
                 })
             });

服务器端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//第一种方法:       
public  string  Post()
         {
             string  s =  "" ;
             HttpContextBase context = (HttpContextBase)Request.Properties[ "MS_HttpContext" ]; //获取传统context    
             HttpRequestBase request = context.Request; //定义传统request对象
 
             for  ( int  i = 0; i < request.Form.Keys.Count; i++)
             {
                 s +=  string .Format( "{0}={1}<br/>" , request.Form.Keys[i], request.Form[i]);
             }
                 return  "Post values:"  + s;
         }
 
//第二种方法:
         public  string  Post([FromBody]Person p)
         {
             return  string .Format( "Put values:name:{0},age:{1}"  + p.Name,p.Age);
         }

4.PUT UPDATE方法:

 客户端方法与POST方法相同,只是TYPE指定为:PUT;

 服务器端与POST方法相同;

5.DELETE 方法:

 客户端方法与GET方法相同,只是TYPE指定为:DELETE;

 服务器端与GET方法相同;

也参见这篇文章:ASP.NET MVC学习系列(二)-WebAPI请求 

本文转自 梦在旅途 博客园博客,原文链接: http://www.cnblogs.com/zuowj/p/4769315.html ,如需转载请自行联系原作者

相关文章
|
8月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
325 0
|
6月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
143 9
|
7月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
108 3
|
7月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
112 7
|
7月前
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
8月前
|
XML 开发框架 .NET
ASP.NET Web Api 如何使用 Swagger 管理 API
ASP.NET Web Api 如何使用 Swagger 管理 API
185 1
|
8月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
115 1
|
8月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
75 0
|
8月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
139 0
|
8月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
88 0
下一篇
oss创建bucket