文档章节

webapi的那些事

_Jsonxu
 _Jsonxu
发布于 2015/12/18 17:34
字数 588
阅读 44
收藏 1

最近在用webapi的时候,通过单元测试调试webapi后发现不少问题,现做以下汇总和解决方案分享:

1.webapi有4种资源调度方式分别对应着数据库的CURD,自动匹配所有的GetXXX或者PostXXX的函数

webapi调度         数据库操作

   GetAsync--------->select

   PostAsync-------->Insert

   PutAsync---------->Update

   DeleteAsync------->Delete

说下post和put区别吧:项目中用post和put方式调度,其实都能实现同样的功能,但是put后返回的结果是单条的,而post返回的结果是多条的,结合到数据库的执行update和add后

返回的受影响行数,应该就很容易理解了吧;

2.如果创建人的api项目是2.0的话,默认自带的一些高版本的dll版本(系列化等)会引发程序在Gload.cs的异常,版本匹配不上,

这个不多说,本人已遇到,解决方式就是更换低版本的dll引用,dll文件统一管理咯;

3.大家在做post提交请求的时候,遇到需要传参的时候,参数较多会封装成实体,那么参数较少的情况可能就会挨个传参(不走url),看似没有问题,建立连接后会出现未将对象引用问题,

经调试发现虽然api通道能走通,但是参数获取未nul,检查地址发现没问题后还是获取null,取网上找了下,发现官方建议在传参时在前面打上【Frombody】标记就可以了,这样就会告诉

api要从请求体重获取data数据(只能存在一个【Frombody】),加上后就可以继续玩耍了-。-;

Ps:[Frombody]如果按照键值的形式传参会获取不到值,所以清空data数据中的键只传value就可以啦(具体为什么还没想清楚,有了解的童鞋望告知*.*);

4.项目中post基本上可以代替增删改操作了,默认访问Put、Delete调度会出现状态值为405的异常,如果需要用到PutAsync、DeleteAsync的童鞋需要在配置文件中加上这一段:

<system.webServer> 
  <modules> 
    <remove name="WebDAVModule" /> 
  </modules> 
  <handlers> 
    <remove name="WebDAV" /> 
  </handlers> 
</system.webServer>

或者移除IIS中的WebDAV Publishing服务即可。


如有不对或缺少,请补充! 

© 著作权归作者所有

共有 人打赏支持
_Jsonxu

_Jsonxu

粉丝 1
博文 8
码字总数 33770
作品 0
南京
高级程序员
私信 提问
ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要...

jeffcky
2017/01/05
0
0
webapi 在POST时的坑以及OracleCommand的参数绑定的坑

刚用webapi, 用$.get时,前后台的请求响应成功了,但在用$.post方法时遇到不少问题。 后搜到一英文资料,基本反映了我的问题,现摘译如下: web api 很好,但post参数问题上,需要用些手段,...

noonoo
2015/03/01
0
1
OAuth2、Token、JWT

参考: 理解OAuth 2.0 Json web token JSON Web Token (JWT) 简介 JWT学习笔记 关于 Token,你应该知道的十件事 Token存储方式解释:详说 Cookie, LocalStorage 与 SessionStorage 一句话解释...

爬墙
2016/08/16
508
0
ASP.NET WebApi技术从入门到实战

一、课程介绍 曾经有一位不知名的讲师说过这么一句名言: 一门RPC技术不会,那么千万万门RPC技术将都不会!在今天移动互联网的时代,作为攻城师的我们,谁不想着只写一套API就可以让我们的Web...

跟着阿笨一起玩NET
2018/09/05
0
0
ASP.NET WebApi技术从入门到实战演练

一、课程介绍 曾经有一位不知名的讲师说过这么一句名言: 一门RPC技术不会,那么千万万门RPC技术将都不会!在今天移动互联网的时代,作为攻城师的我们,谁不想着只写一套API就可以让我们的Web...

阿笨net
2018/04/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx反向代理配置去除前缀

使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发给下一个服务。设置proxy_pass请求只会替换域名,如果要根据不同的url后缀来访问不同的服务,则需要通过如下方法: 方法一:...

架构师springboot
14分钟前
1
0
QianBill API 开发笔记

JWT

BeanHo
26分钟前
1
0
Elasticsearch实战篇——Spring Boot整合ElasticSearch

当前Spring Boot很是流行,包括我自己,也是在用Spring Boot集成其他框架进行项目开发,所以这一节,我们一起来探讨Spring Boot整合ElasticSearch的问题。 本文主要讲以下内容: 第一部分,通...

JAVA_冯文议
35分钟前
1
0
不错的linux下通用的java程序启动脚本

#!/bin/sh#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,#也可以作为启动java程序的独立脚本来使用。##Author: tudaxia.com, Date: 2011/6/7...

sprouting
今天
3
0
Linux manjaro系统安装后无法连接wifi,解决方案

笔记本为联想 thinkpad E480 首先通过命令lspci -k看一下原因是否为缺少wifi驱动,如下,如果没有Kernel driver in use,说明缺少驱动。 05:00.0 Network controller: Realtek Semiconducto...

bluecoffee
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部