ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-10-17 18:01:24  阅读:279  来源: 互联网

标签:webApi string c# InData LoginController 入参 Login AddTrack Log


问题描述

做一个登录模块,提供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

标签:webApi,string,c#,InData,LoginController,入参,Login,AddTrack,Log
来源: https://blog.csdn.net/redRnt/article/details/120813177

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有