聊聊asp.net中Web Api的使用

简介: 扯淡     随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式。这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥,只是鱼和熊掌不能兼得,各种语法糖带来开发的便利势必会牺牲程序运行的性能,这是无可避免的,通用和效率永远是需要程序员去取舍的话题。

扯淡

    随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式。这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥,只是鱼和熊掌不能兼得,各种语法糖带来开发的便利势必会牺牲程序运行的性能,这是无可避免的,通用和效率永远是需要程序员去取舍的话题。扯淡到这就完了,下来就聊聊今天的主角web api,web api 是mvc4.0之后出现的一种技术吧,他的创建和带来的便利我就不介绍了。这边文章主要聊聊,我对web api开发的一些理解。

 

话题一:[FromBody]特性修饰符

FromBody是一个修饰参数的特性,比如:public void Post([FromBody]string name),那么他的作用是什么呢,其实他的作用是查询post请求中参数为name的值。

要注意的是:[FromBody]只能修饰单个参数,如果是多个参数的话,就要封装成对象进行数据专递了,比如:public void Post([FromBody]string name,[FromBody]int id)是取不到值的,要把id和name封装成Userinfo对象,使用 public void Post([FromBody]Userinfo user)进行调用。

 

话题二:post传递多个不同对象的参数

已经post请求需要使用[FromBody]特性修饰符接收,但是FromBody只能接收单个参数,如果需要传递不同对象的输出就比较麻烦了,新建实体对象成本太大,也不能完全适应适应的类型,这个时候需要使用JObject来处理,代码如下:

jQuery.post("/Api/Userinfo/Add/", {
    mobile: "18049579804",
    pwd: "123456",
    smsCode: "12346",
    t: new Date().getTime()
}, function (data) {
    if (data) {
        document.writeln(data);
    }
});
public string Add([FromBody]JObject pdata)
{
    string mobile = Convert.ToString(pdata["smsCode"]);
    string pwd = Convert.ToString(pdata["pwd"]);
    string smsCode = Convert.ToString(pdata["smsCode"]);
}

 

话题三:请求方式(Get & Post)

关键字区分:Get请求或者Post请求,可以用自身的关键字来区分,比如:GetUser(int id)肯定为get请求,Getxxx(params param)等格式为Get请求,post同理。当然还有一种方式,是没有关键字修饰的方法,比如:FindUser这种情况下,这种请求下默认是Post请求的Get请求就会报405的错。

 

话题四:返回json格式的结果

这个会简单设置返回值为Net自带的Json格式即可,可以返回JObject或JArray都是可以用ajax接收json对象的。代码如下:

public JObject PostFindUser([FromBody]Userinfo user)
{
    JObject res = new JObject();
    res["name"] = string.Format("{0}是好人~", user.Name);
    return res;
}

 

话题五:路由设置

本身的路由不是很好,需要设置WebApiConfig.cs配置为:控制/动作/参数

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{Action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

 

 

 题外话:webapi获取http header信息代码:Request.Headers.GetValues("xxx")

 

 

 

 

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
JSON 前端开发 API
C#进阶系列——WebApi 接口参数不再困惑:传参详解
原文:C#进阶系列——WebApi 接口参数不再困惑:传参详解 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路。
4714 0
|
API
springmvc+swagger构建Restful风格文档
  本次和大家分享的是java方面的springmvc来构建的webapi接口+swagger文档;上篇文章分享.net的webapi用swagger来构建文档,因为有朋友问了为啥.net有docpage文档你还用swagger,这里主要目的是让接口文档统一,当操作多种开发语言做接口时,如果有统一风格的api文档是不是很不错;还有就springcloude而言,微服务如果有很多的话,使用swagger自动根据服务serverid来加载api文档是很方便的。
1529 0
|
JSON 前端开发 .NET
自行实现高性能MVC WebAPI
  wcf虽然功能多、扩展性强但是也面临配置忒多,而且restful的功能相当怪异,并且目前没法移植。asp.net core虽然支持webapi,但是功能也相对繁多、配置复杂。就没有一个能让码农们安安心心的写webapi,无需考虑性能、配置、甚至根据问题场景自行设计、改造等问题的方案么?   当然不是,特别是在dnc2.
1796 0
|
前端开发 测试技术 C#
C#进阶系列——WebApi 跨域问题解决方案:CORS
原文:C#进阶系列——WebApi 跨域问题解决方案:CORS 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题。本篇主要从实例的角度分享下CORS解决跨域问题一些细节。
3305 0
|
前端开发 API 数据安全/隐私保护
|
Web App开发 JSON 前端开发
WebApi接口 - 如何在应用中调用webapi接口
很高兴能再次和大家分享webapi接口的相关文章,本篇将要讲解的是如何在应用中调用webapi接口;对于大部分做内部管理系统及类似系统的朋友来说很少会去调用别人的接口,因此可能在这方面存在一些困惑,希望本篇分享文章内容能给您们带来帮助或者学习,希望大家喜欢,也希望各位多多扫码支持和点赞谢谢:   ...
1432 0
|
Java
JVisualVM之GC插件+错误"not supported for this jvm"+命令jstatd
插件安装 tools->plugin->Available Plugin 会有值得安装的插件,如:VisualGC 插件列表:https://visualvm.
2574 0