c# webApi 获取不到入参,解决方案

2021/10/17 20:13:09

本文主要是介绍c# webApi 获取不到入参,解决方案,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

问题描述

做一个登录模块,提供api给前端调用,发现死活拿不到入参。最开始的写法如下:

 public string Login([FromBody] string InData)
        {

            //读取登录json
            Log.AddTrack("LoginController.Login", "Begin");
            Log.AddTrack("LoginController.Login", "收到入参:" + InData);
            return InData;
            }

postman调用如下:
在这里插入图片描述
查看本地日志:
在这里插入图片描述
居然为空!

解决思路

  1. 百度,发现此类问题不多,所以记录一下。
  2. 查到一种方法,说需要新建一个模型类,用于接收结果,才能显示。于是尝试:
public class DataModel
        {
           public string InParam
            {
                get;
                set;
            }
        }
        
         public string Login([FromBody] DataModel InData)
        {

            //读取登录json
            Log.AddTrack("LoginController.Login", "Begin");
            Log.AddTrack("LoginController.Login", "收到入参:" + InData.InParam);
            return InData.InParam;
            }

结果同上,没有效果,于是猜测可能接收到的不是一个string,所以都赋值不过去。

  1. 再查,发现postman的content-type →application/json,于是想用一个json类来接收,于是改造代码如下:
public string Login([FromBody] JObject InData)
        {

            //读取登录json
            Log.AddTrack("LoginController.Login", "Begin");
            Log.AddTrack("LoginController.Login", "收到入参:" + InData.ToString());
            return InData.ToString();
            }

嘿,还真可以!
在这里插入图片描述
不知道这种接收方式是谁想出来的。
问题解决!

拓展

再拓展一下:

  1. FormBody跟FromUrl
    在这里插入图片描述
  2. 使用url的post方式:
 [Route("test")]
        [HttpPost]
        public string TestReturn(string a,string b)
        {
            //读取登录json
            Log.AddTrack("LoginController.TestReturn(", "Begin");
            return a + b;
        }

在这里插入图片描述
postman调用方式:
在这里插入图片描述

参考链接:

https://blog.csdn.net/PLA12147111/article/details/89666797
https://www.cnblogs.com/rohelm/p/3207430.html



这篇关于c# webApi 获取不到入参,解决方案的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程