• .net MVC/API 记几个踩过的传参坑


    看似简单的调控制器或API传参,踩过的坑也不少,随手记一下:

    1、当用POST时,方法名不能以Get开头,这个坑死人不偿命啊,一开始抓瞎了,各种排查,后来发现这规律,网上也有解释。就是命名以Get开头的方法就会强制认为是GET方法,哪怕写了[HTTPPOST]也没用。但方法名不以GET开头真的不习惯啊。。。GETXXList多明确,只能改成QueryXXList之类的了

    2、POST数组不会直接对应成List<T>类型,到少MVC4是不行,据说MVC5还是6能支持,但旧项目是不行,不是JS循环拼下数组传到后台就能自动识别到List的,目前做法都是JSON.StringIfy转成字符串,后台用JsonConvert反解析成集合。

    3、API如果是GET方法,用实体接收参数,要用[FromURI]才行。如果是POST,要用[FromBody]

    4、今天更是碰到一个奇葩的特性,MVC用实体接收时,变量名不能和实体里元素重名。。。

    比如 public ActionResult TestMethod(TestModel aa),如果TestModel里有个 string aa {get; set;},那这个TestModel实体就会接收成null。。。排查了半天

    5、一个接口文档里,要求API控制器方法名带 - 这个符号,可能是JAVA可以?.net直接是不行,折腾了半天用上HttpRoute("xx-xx/xx")才可以,默认是不行,直接报错。

    6、一个接口要求把数据在Body里POST,直接用公司封装的POST也不行,用WebClient、HttpRequest什么的都不行,最后装了RestSharp,把 {xx:xx} 这样的参数字符串放在body里才可以,对应的PostMan里Raw标签栏那样用法

    7、POST支持同时传两类参数,一类放在URL上(即QueryParam),一类放在body里,有个小项目就是同时传了这两种类型的参数才可以(好像是Body强制被用成固定的东西了,想要另外传参只能在URL里)

  • 相关阅读:
    nginx开启ssl模式
    安装nginx
    node的express框架
    使用Thumbnails工具对图片进行缩放,压缩
    正则
    VUE设置全局方法和属性
    js——XHR知识归纳
    页面资源加载过程
    Mongodb的增删改查
    Mongodb基本概念
  • 原文地址:https://www.cnblogs.com/liuyouying/p/10841546.html
Copyright © 2020-2023  润新知