Webapi创建和使用 以及填坑(二)
Webapi创建和使用 以及填坑(二)
上篇文章由于时间问题没能讲到POST提交,今天做一个补充
POST:
当我们直接通过POST发送方式发送会发现错误信息
参考解决:https://www.cnblogs.com/tinya/p/4562692.html

后面通过修改路由尝试解决

此时再通过控制器到动作进行访问

文章中说没有重新生成也会出现这样的错误,生成之后依然出错(ctrl+shift+B)
事实上.net web api能够正确的识别我们的控制器处理api/webtest,但不能找到一个可以接受的方式处理请求。换句话说能找到控制器,找不到动作。
文章作者最后通过在MSDN上web api官方说明找到解决方法
一、传递一个参数

这个意思应该是在方法参数中需要使用[FromBody]属性强制请求内容,webapi会使用media-type格式化程序请求正文读取name参数的值。

最后通过POST发送得到结果

当时我也好奇为什么没有值,后面通过调试发现name值并没有发送过来

参考作者的说法web api要求请求传递的[FromBody]参数是一个特定的格式,这种格式也并不是key=value的键值形式。Web API 的模型绑定器希望找到 [FromBody] 里没有键名的值,也就是说, 不是 key=value ,而是=value 。

果然后台接收到了请求的值

既然已经得到了参数,那么我现在要传入两个参数是不是应该这样写呢?(我当时也是这样想的)

结果很遗憾

二、传递多个参数
后面又通过MSDN查找到资料

当时我的心情就是这样:不起作用你特么还写。。。
但是通过这段话仿佛明白了,[FromBody]请求的内容是一个”application/json”请求的正文是原始的JSON字符串(不是JSON对象),这才明白过来,他传递过来的应该是个JSON字符串而不是key=value形式的对象形式。
于是我又犯傻的这样尝试了

得到的结果却是


(脑阔痛)
于是看了下文章的讲解,他解释到[FromBody]修饰的参数只能有一个,如果需要多个参数,必须将参数封装起来,而这个封装是后台进行封装(或者前台直接发送json串)
- A. 前台发送JSON串:

结果和我想的差不多直接将字符串发送过去,后台再进行解析

封装了一个User类

准备反序列化,结果

难受至极,找了很久的问题,才发现,我穿的json有问题,我只是单个的对象,结果我穿过去的是个数组。

修改了JSON字符串接着解析


MDF果然是JSON写错了,同志们需要细心啊
回归主题:webapi使用post发送JSON串后台进行解析到这里就结束了
- B. 前台发送key=value后台通过对象映射获取
首先修改参数类型为User代码如下

post通过发送key=value发送参数


结果还是很满意的,后台直接根据表单的值映射到了模型中,在MVC表单传值有相关映射,比如前台直接提交key=value形势后台可以定义相同的参数名称、定义对象类(成员名称与之相同)等用法。具体文章地址忘了。
在这里webapi使用Post发送多参数使用Key=value方式也就结束了。
最后感谢博主文章,这篇文章里面还有很多我没有说到的,希望对大家有帮助,文章链接:https://www.cnblogs.com/tinya/p/4562692.html
Webapi创建和使用 以及填坑(二)的更多相关文章
- Webapi创建和使用 以及填坑(三)
WebApi使用填坑 前面工作跟别人做数据对接,因为我们是对接方所以东西都得按照他们的要求进行修改,于是给自己挖了很多坑,其实更多的都是自己能力还不够,在这里也做一个笔记了. 请求类型:applica ...
- Webapi创建和使用 以及填坑(一)
Webapi创建和使用 前言:在开发的过程中接口的用途有很多,而且是非常必要.通过接口我们可以跨语言的进行开发web与app或者其他程序,比如http接口.api接口..Rpc接口.rmi.webse ...
- Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑(二)
django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...
- WebApi传参总动员(填坑)
本以为系列文章已经Over,突然记起来前面留了个大坑还没填,真是自己给自己挖坑. 这个坑就是: (body 只能被读取一次)Only one thing can read the body MVC和W ...
- Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...
- [Xamarin]我的Xamarin填坑之旅(二)
上一篇交代了我Xamarin填坑的背景,大概聊了聊第一步环境配置,第二步创建项目和开发框架选择.如果有一个可用的梯子,这部分基本不会出错. 接下来就具体聊一聊写代码的过程中遇到的一些事儿. 第三步是码 ...
- .NET 跨平台框架Avalonia UI: 填坑指北(二):在Linux上跑起来了
上一章回顾: .NET 跨平台框架Avalonia UI: 填坑指北(一):熟悉UI操作 本篇将要阐述 包括但不仅限于Avalonia及所有Windows到Linux跨平台开发 的一些注意事项: 一 ...
- ASP.Net Core3.1 生成二维码填坑
ASP.Net Core3.1 使用QrCode生成二维码 部署到Linux报错 The type initializer for 'System.DrawingCore.GDIPlus' threw ...
- Cloudera Manager 5.9 和 CDH 5.9 离线安装指南及个人采坑填坑记
公司的CDH早就装好了,一直想自己装一个玩玩,最近组了台电脑,笔记本就淘汰下来了,加上之前的,一共3台,就在X宝上买了CPU和内存升级了下笔记本,就自己组了个集群. 话说,好想去捡垃圾,捡台8核16线 ...
随机推荐
- Firewalld的结构
原文地址:http://www.excelib.com/article/287/show firewalld简介 Centos7中默认将原来的防火墙iptables升级为了firewalld,fire ...
- [转]kaldi基于GMM做分类问题
转自:http://blog.csdn.net/zjm750617105/article/details/55211992 对于每个类别的GMM有几种思路: 第一是将所有训练数据按类别分开,每类的数据 ...
- 两种经典电商CSS布局
圣杯布局和双飞翼布局! 两种布局功能相同,都是为了实现两端宽度固定,中间宽度自适应的三栏布局 圣杯布局: 三个区域都处于左浮动状态,并使main的宽度成父容器的100% 为两侧侧边栏添加负margin ...
- Python math库常用函数
math库常用函数及举例: 注意:使用math库前,用import导入该库>>> import math 取大于等于x的最小的整数值,如果x是一个整数,则返回x>>> ...
- 京东购物车的 Java 架构实现及原理!
今天来写一下关于购物车的东西, 这里首先抛出四个问题: 1)用户没登陆用户名和密码,添加商品, 关闭浏览器再打开后 不登录用户名和密码 问:购物车商品还在吗? 2)用户登陆了用户名密码,添加商品,关闭 ...
- Javascript高级编程学习笔记(31)—— BOM(5)screen、history对象
screen对象 screen对象应该是BOM对象中最不常用的对象了 其主要用于提供客户端的显示能力信息 包括浏览器外部显示的信息,和像素的宽高等 这个对象的主要用于检测客户端能力,一般不会影响功能 ...
- JVM内存分配和垃圾收集策略
java内存区域 程序计数器 因为java可以多线程并发执行,因此,为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器.记录正在执行的虚拟机字节码指令的地址. 这个区域不会产生内 ...
- 第46节:Java当中的常量池
Java当中的常量池 在Java虚拟机jvm中,内存分布为:虚拟机堆,程序计数器,本地方法栈,虚拟机栈,方法区. 程序计数器是jvm执行程序的流水线,是用来存放一些指令的,本地方法栈是jvm操作系统方 ...
- python列表(list)的简单学习
列表是由一系列按特定顺序排列的元素组成, 是 Python 中使用最频繁的数据类型.列表可以完成大多数集合类的数据结构实现.列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表.字典(即嵌套 ...
- slf4j日志门面担当
一.简介 slf4j主要是为了给Java日志访问提供一个标准.规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等.当然slf4j自己也提供了功能 ...