.NetCore WebApi Post请求参数的传递和获取_webapi 获取post请求body中的数据-程序员宅基地

技术标签: WebApi  post  参数传递  webapi  

post请求有两种传递参数的方法,一种是通过在url后面使用问号(?)将参数拼接的方式传递。另一种是通过data传递参数。

get请求只能通过url传递参数,post请求既可以通过url传递参数,也可以通过data(body体)传递参数。可以参考文章:https://www.zhihu.com/question/64312188

以下所有实例都是传递三个参数:title、content、typeid。示例通过两种方式请求后端接口,分别用ajax请求和接口测试工具apipost请求。

第一种通过url传递参数:

前端代码:

<html>

<head>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script type="text/javascript">
    function sendAjax() {
        $.ajax({
            url: "http://localhost:42192/api/BlogNews/Create?title=我是标题啊&content=我是内容啊&typeid=1",
            headers: { 'Content-Type': 'multipart/form-data' },
            type: "post",
            dataType: "json",
            success: function(data) {
                console.log(data);
            }
        });
    }
    </script>
</head>

<body>
    <button id="b01" type="button" onclick="sendAjax()">发送请求</button>
</body>

</html>

后端api接口:

[HttpPost("Create")]
        public async Task<ActionResult<ApiResult>> Create(string title, string content, int typeid)
        {
            try
            {
                BlogNews blogNews = new BlogNews
                {
                    Title = title,
                    Content = content,
                    Time = DateTime.Now,
                    BrowseCount = 0,
                    LikeCount = 0,
                    TypeId = typeid,
                    WriterId = 1
                };

                bool b = await _blogNewsService.CreateAsync(blogNews);
                if (!b)
                {
                    return ApiResultHelper.Error("添加失败,服务器发生错误");
                }
                else
                {
                    return ApiResultHelper.Success(blogNews);
                }
            }
            catch (Exception ex)
            {
                return ApiResultHelper.Error("添加失败,服务器发生错误");
            }
        }

这里的参数是声明了三个变量,分别获取三个参数的值。

ApiPost软件调用示例:

前端ajax请求示例:

 

第二种通过data传递参数:

前端代码:

<html>

<head>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    <script type="text/javascript">
    function sendAjax() {
        $.ajax({
            url: "http://localhost:42192/api/BlogNews/Create1",
            contentType: "application/json",
            data: JSON.stringify({
                title: "前端请求标题222",
                content: "内容2222",
                typeid: 5
            }),
            type: "post",
            dataType: "json",
            success: function(data) {
                console.log(data);
            }
        });
    }
    </script>
</head>

<body>
    <button id="b01" type="button" onclick="sendAjax()">发送请求</button>
</body>

</html>

后端api接口:

        [HttpPost("Create1")]
        public async Task<ActionResult<ApiResult>> Create1([FromBody]TestClass testClass)
        {
            try
            {
                BlogNews blogNews = new BlogNews
                {
                    Title = testClass.title,
                    Content = testClass.content,
                    Time = DateTime.Now,
                    BrowseCount = 0,
                    LikeCount = 0,
                    TypeId = testClass.typeid,
                    WriterId = 1
                };

                bool b = await _blogNewsService.CreateAsync(blogNews);
                if (!b)
                {
                    return ApiResultHelper.Error("添加失败,服务器发生错误");
                }
                else
                {
                    return ApiResultHelper.Success(blogNews);
                }
            }
            catch (Exception ex)
            {
                return ApiResultHelper.Error("添加失败,服务器发生错误");
            }
        }
    public class TestClass {
        public string title { get; set; }
        public string content { get; set; }
        public int typeid { get; set; }
    }

这里后端接口在参数接收的时候需要声明FromBody,表示该参数值应该从请求的Body中获取,而不是从URL中获取。同时声明了一个类TestClass,参数通过对象的形式接收。

ApiPost软件调用示例:

 前端ajax请求示例:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liangmengbk/article/details/121666756

智能推荐

Python函数知识点(详解)-程序员宅基地

文章浏览阅读6w次,点赞584次,收藏2.9k次。本篇总结了Python函数相关的基础知识点,代码案例超详细,欢迎阅读,交流!_python函数知识点

虚拟机如何在net模式下进行联网_虚拟机net网络-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏7次。虚拟机如何在net模式下进行联网(centos7)1.首先你需要先将虚拟机安装好,如果不会可以参考[centos7安装教程](https://blog.csdn.net/qq_44714603/article/details/88829423?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161949204316780274178621%2522%252C%2522scm%2522%253A%252220140713.130102334…_虚拟机net网络

python中的range()函数_python range函数-程序员宅基地

文章浏览阅读6.5w次,点赞59次,收藏241次。range()函数:用于生成一个整数序列;range()的三种创建方式:第一种:只有一个参数(小括号中只给了一个数)即range(stop)例如:range(10)指的是默认从0开始,步长为1,不包括10;注意:的运行结果为:;要想输出0-9的数字序列则应该是的结果为;第二种:range(start,stop) (给了两个参数,即小括号中给了两个数)r=range(1,10) print(list(r)) 运行结果为:;第三种:range(start,stop,step):._python range函数

数据的四种基本存储方法_数据存储-程序员宅基地

文章浏览阅读2.5k次。数据的四种基本存储方法,(1)顺序存储方法(2)链接存储方法(3)索引存储方法(4)散列存储方法_数据存储

Mysql启用SSL以及JDBC连接Mysql配置_jdbc mysql ssl-程序员宅基地

文章浏览阅读6.7k次。一、Mysql启用SSL配置1.检查mysql是否支持ssl在linux端用root账号进入mysql命令行界面,查看当前版本mysql数据库是否支持ssl,如果出现以下结果表示支持,如果没有考虑更换版本,或者编译一个带有SSL版本的mysqlshell>show variables like ‘%ssl%’;2.设置用户是否使用ssl连接1.查看用户是否使用SSL连接she..._jdbc mysql ssl

java jwt使用,springboot 整合java-jwt,java jwt工具类-程序员宅基地

文章浏览阅读612次。java jwt使用,springboot 整合java-jwt,java jwt工具类================================Copyright 蕃薯耀2020-12-03https://www.cnblogs.com/fanshuyao/一、引入java-jwt的maven依赖<dependency> <groupId>..._jwtproperties

随便推点

RPMs系列卟啉框架材料ZnMn-RPM/AZn-RPM/FeZn-RPM/ZnPO-MOF齐岳供应金属-四羧基苯基卟啉(M-TCPPs)及三维框架卟啉材料[Cu(TPyP)Cu2Mo3O1]_fezn-5是什么意思-程序员宅基地

文章浏览阅读298次。RPMs系列卟啉框架材料ZnMn-RPM/AZn-RPM/FeZn-RPM/ZnPO-MOF齐岳供应金属-四羧基苯基卟啉(M-TCPPs)及三维框架卟啉材料[Cu(TPyP)Cu2Mo3O1]_fezn-5是什么意思

51单片机与ESP8266-01s模块通讯点灯_51单片机与eps826601s通信-程序员宅基地

文章浏览阅读9.9k次,点赞10次,收藏92次。前言 本文章为方便新手上手直接用最简单的点灯展示,关于ESP8266-01s的AT指令类就上网搜有很多这就不多讲了。接线ESP-01S USB转TTL 51单片机 VCC 3.3V 3.3V GND GND GND EN 3.3V 3.3V TX RX P3.0 RX TX P3.1 IO0(注刷固件时插) GND(注刷固件时插) 一、ESP8266-01S接US..._51单片机与eps826601s通信

麒麟820也迎来鸿蒙系统,魅族适配麒麟820系统 和鸿蒙OS,魅族要入赘华为系-程序员宅基地

文章浏览阅读188次。蜗居在珠海的小厂魅族,虽然是“小厂”,但是其一路走来的历史,一直被科技圈津津乐道,而深入简出的带头大哥黄章,更是魅友的精神领袖。魅族是一个很低调的企业,但是却有这样一种魅力,总能有意无意的成为新闻的主角,比如近日知名科技大V中国IT杂谈发布了这样一条微博:魅族正在适配麒麟820和鸿蒙系统,未来还要加入华为系。关于这条信息的真实性后面再说,我们先来讨论下华为和魅族是否真的可以成为CP,共同走向人生巅..._鸿蒙420支持麒麟820吗

GoLand live template自定义模板失效问题解决_live template 在jsp中不生效-程序员宅基地

文章浏览阅读306次。GoLand live template自定义模板失效问题解决_live template 在jsp中不生效

STM32F103 外部中断(EXTI)介绍以及代码_stm32f103的exti16连接到 事件,exti17连接到 事件,exti18连接到 事件。s-程序员宅基地

文章浏览阅读603次。如果用 GPIO 作为外部中断,需要配置 AFIO,来选择是哪个端口,可以是 GPIOA/GPIOB/GPIOC/GPIOD/GPIOE/GPIOF/GPIOG,需要注意的是,对于同一个 Pin 脚,只能选择配置一个端口,例如我配置 Pin15 为 GPIOC,那么就不能再用用 GPIOA/B/D/E/F/G 15 作为 EXTI ,如下图所示。②Edge Detect :边缘检测,可以是上升沿触发,也可以是下降沿触发,还可以是上升沿和下降沿都可以分别触发,对应图中 ②-1 和 ②-2。_stm32f103的exti16连接到 事件,exti17连接到 事件,exti18连接到 事件。stm32f