聊聊asp.net中Web Api的使用

扯淡

    随着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")

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python脚本去除文件名里的空格

原始文件名里很多空格,写了个python脚本去除文件名里的空格 import osfilepath"image" # 文件目录名 zimulus os.listdir(filepath)for musicname in zimulus:#改目录下的文件名oldmusicpath filepath \\ musicnamenewmusicname musicname.replace( …

plsql查询乱码问题解决

步骤一:新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,确定即可; 步骤二: 退出plsql,重新登陆plsql。输入sql语句,执行&#xff0…

eclipse打开文件所在目录

设置 添加扩展工具,添加步骤如下: Run-->External Tools-->External Tools Configurations... new 一个 programlocation 里面填 :C:/WINDOWS/explorer.exeArguments 里面填: ${container_loc}设置完成之后,选择文件&#…

python saml2 认证实例程序demo

# pip install pysaml2 from saml2.client import Saml2Client from saml2.config import Config as Saml2Configmetadata_filepath acs_endpoint_url entity_id# 获取跳转网址 saml_settings {metadata: {local: [authenticator_self.metadata_filepath]}, service: {sp: {end…

找回Kitkat的AppOps

2019独角兽企业重金招聘Python工程师标准>>> How to invoke AppOps in Android 4.4 KITKAT % adb shell am start -n com.android.settings/com.android.settings.Settings \ -e :android:show_fragment com.android.settings.applications.AppOpsSummary \ --activ…

检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败

具体解决方法如下: 1:在服务器上安装office的Excel软件; 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"; 3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM…

win2003 sp2+iis 6.0上部署.net 2.0和.net 4.0网站的方法

网站环境 IIS6.0,操作系统Windows server2003 sp2,服务器之前已经部署了.net 2.0和asp的网站,现在要部署新开发的.net 4.0网站.本来认为很简单,却遇到了很多问题,下面详细描述下过程: 1.官网下载.net framework4.0,下载地址:http://www.micro…

python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测

本篇博客接着讲解机器视觉的有关技术和知识。包括宽度测量,缺陷检测,医学处理。 一:宽度测量 在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺、游标卡尺、塞尺等。而这些测量手段测量精度低、速度慢&…

web api添加拦截器

实现思路 1.标识控制器有拦截特性; 2.控制器拦截处理; 代码实现 1.标识控制器有拦截特性,代码: [MyFilter]public string PostFindUser([FromBody]Userinfo user){return string.Format("{0}是好人~", user.Name);}…

map 与 unordered_map

两者效率对比&#xff1a; #include <iostream> #include <string> #include <map> #include <unordered_map> #include <sys/time.h> #include <list>using namespace std;template<class T> void fun(const T& t, int sum) {f…

YOLO v3 安装并训练自己数据

文章目录 1. 安装1.1 模型安装1.2 运行Demo2.训练自己的数据集2.1数据集准备2.2修改配置文件2.2.1修改cfg/voc.data2.2.2修改data/voc.names2.2.3修改cfg/yolo-voc.cfg2.3 训练3. 测试3.1 单张图像测试3.2多张图像测试3.3 测试数据集测试mAP、recall等参数命令参数总结训练模型…

Chrome浏览器必装的扩展工具

名称作用下载地址Postman模拟各种http请求点击下载JSON Viewer访问json结果自动视图化点击下载Axure RP Extension for Chrome查看Axure原型图点击下载 注意&#xff1a;下载地址都需要FQ。

OpenStack-Mitaka 一键安装测试环境脚本

说明&#xff1a;这个脚本是采用Bash Shell编写&#xff0c;这个版本还只能作为测试环境搭建使用。 此脚本原形的发起人是网友&#xff1a;WuYuLiang.这里有他的博客链接: 第一版的链接: http://blog.csdn.net/wylfengyujiancheng/article/details/51137707 最新版链接: http:…

grunt使用小记之uglify:最全的uglify使用DEMO

grunt-contrib-uglify uglify是一个文件压缩插件&#xff0c;项目地址&#xff1a;https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO来展示如何使用uglify插件。 DEMO环境 package.json: {"name": "grunt-demo","version": &q…

后台设计中容易被忽略的坑

1.数据关联性删除判断 示例&#xff1a;比如后台发布了一个待抢购的订单&#xff0c;app已经把此单抢购&#xff0c;因为后台没有及时刷新状态&#xff0c;所有如果要删除或下架此笔订单&#xff0c;必须先要验证此订单的状态是否为已经抢购&#xff1b; 2.数据重复录入问题 示…

人生该如何抉择

记得2012年初的时候受公司同事的讲解&#xff0c;我从一个对代码一无所知&#xff0c;了解到了计算机的数据类型、数组在内存中的存储&#xff0c;进而想走进程序员的行业&#xff0c;博客上认识的一个前辈告诉我了一个方向&#xff0c;前辈告诉我&#xff1a;“我建议你学java…

Android优秀参考APP源码

1 仿网易云音乐客户端 仿网易云音乐安卓版客户端&#xff0c;一个月内仍然有更新&#xff0c;接近2000star&#xff0c;相信是一款非常棒的音乐客户端。 涉及技术&#xff1a; Timber Fresco MediaPlayerProxy Android-ObservableScrollView retrofit ImitateNetEasyCloud…

聊聊excel生成图片的几种方式

目录 I&#xff1a;需求。 II&#xff1a;实现思路。 III&#xff1a;实现方式。 IV:优缺点分析。 V&#xff1a;结论。 VI&#xff1a;wps安装与配置。 正文 1.需求&#xff1a;把excel生成等比的图片。 2.实现思路&#xff1a;因为excel不能直接生成图片&#xff0c;所以需…

分类算法之贝叶斯(Bayes)分类器

摘要&#xff1a;旁听了清华大学王建勇老师的 数据挖掘&#xff1a;理论与算法 的课,讲的还是挺细的,好记性不如烂笔头,在此记录自己的学习内容,方便以后复习。 一&#xff1a;贝叶斯分类器简介 1&#xff09;贝叶斯分类器是一种基于统计的分类器,它根据给定样本属于某一个具体…

Ios生产证书申请(含推送证书)

一、Mac机上生成请求文件。 Mac机上点击证书助手 > 从证书颁发机构请求证书 > 得到CertificateSigningRequest.certSigningRequest请求文件&#xff08;此请求证书建议一直保存&#xff0c;因为根证书的生成需要使用此请求文件&#xff0c;根证书多个app可以使用一个&am…