zoukankan      html  css  js  c++  java
  • 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串)

    1. A.    前台发送JSON串:

     

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

     

    封装了一个User类

     

    准备反序列化,结果

     

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

     

    修改了JSON字符串接着解析

     

    MDF果然是JSON写错了,同志们需要细心啊

    回归主题:webapi使用post发送JSON串后台进行解析到这里就结束了

    1. B.    前台发送key=value后台通过对象映射获取

    首先修改参数类型为User代码如下

     

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

     

    结果还是很满意的,后台直接根据表单的值映射到了模型中,在MVC表单传值有相关映射,比如前台直接提交key=value形势后台可以定义相同的参数名称、定义对象类(成员名称与之相同)等用法。具体文章地址忘了。

    在这里webapi使用Post发送多参数使用Key=value方式也就结束了。

    最后感谢博主文章,这篇文章里面还有很多我没有说到的,希望对大家有帮助,文章链接:https://www.cnblogs.com/tinya/p/4562692.html

  • 相关阅读:
    安装windows系统(win7)
    三大跨平台网盘--dropbox
    三大跨平台网盘--google driver
    三大跨平台网盘--ubuntu one
    ubuntu制作usb启动盘
    高斯滤镜
    gimp之旅
    JAVAOOP集合框架
    JAVAOOP异常
    JAVAOOP多态
  • 原文地址:https://www.cnblogs.com/easyauthor/p/9436393.html
Copyright © 2011-2022 走看看