添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

创建实体类

前一篇博客讲了 Get 模式下的传递、接收参数的几种方法,现在来介绍一下 Post 模式下传递、接收参数的几种方法。首先还是老样子,创建一个空的 ASP.NET WebAPI 工程,在 Models 文件夹下创建一个实体类: User ,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace WebApi.Models
    public class User
        /// <summary>
        /// 编号
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// 用户性
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }

方法一:只传递一个参数

如果只是传递一个参数可以使用如下方法,需要注意的是该参数的key必须为空,同时后台必须加上[FromBody]标识。

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>访问ASP.NET WebAPI</title>
    <script src="js/jquery-3.4.1.min.js"></script>
</head>
    <button onclick="getUserInfo()">确定</button>
    <script>
        function getUserInfo() {
            $.ajax({
                type: 'post',
                url: 'https://localhost:44399/api/User/GetUserInfo',
                data: {
                    '': '张三'
                success: function (data) {
                    window.alert(data);
    </script>
</body>
</html>
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApi.Models;
namespace WebApi.Controllers
    public class UserController : ApiController
        [HttpPost]
        public string GetUserInfo([FromBody] string userName)
            return string.Format("名称:{0}", userName);

结果如下:
在这里插入图片描述

方法二:传递多个参数映射到实体类

如果希望前端参数映射到实体类可以使用如下方法:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>访问ASP.NET WebAPI</title>
    <script src="js/jquery-3.4.1.min.js"></script>
</head>
    <button onclick="getUserInfo()">确定</button>
    <script>
        function getUserInfo() {
            $.ajax({
                type: 'post',
                url: 'https://localhost:44399/api/User/GetUserInfo',
                data: {
                    id: 1,
                    userName: '张三',
                    password: '123456'
                success: function (data) {
                    window.alert(data);
    </script>
</body>
</html>
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApi.Models;
namespace WebApi.Controllers
    public class UserController : ApiController
        [HttpPost]
        public string GetUserInfo([FromBody] User user)
            return string.Format("编号:{0},用户名:{1},密码:{2}", user.Id, user.UserName, user.Password);

结果如下:
在这里插入图片描述

方法三:利用JObject接收多个参数(推荐)

这种方法比较推荐,无论是一个参数还是多个参数都能使用,代码如下:

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>访问ASP.NET WebAPI</title>
    <script src="js/jquery-3.4.1.min.js"></script>
</head>
    <button onclick="getUserInfo()">确定</button>
    <script>
        function getUserInfo() {
            $.ajax({
                type: 'post',
                url: 'https://localhost:44399/api/User/GetUserInfo',
                data: {
                    id: 1,
                    userName: '张三',
                    password: '123456'
                success: function (data) {
                    window.alert(data);
    </script>
</body>
</html>
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebApi.Models;
namespace WebApi.Controllers
    public class UserController : ApiController
        [HttpPost]
        public string GetUserInfo([FromBody] JObject obj)
            int id = int.Parse(obj["id"].ToString());
            string userName = obj["userName"].ToString();
            string password = obj["password"].ToString();
            return string.Format("编号:{0},用户名:{1},密码:{2}", id, userName, password);

结果如下:
在这里插入图片描述

创建实体类前一篇博客讲了Get模式下的传递、接收参数的几种方法,现在来介绍一下Post模式下传递、接收参数的几种方法。首先还是老样子,创建一个空的ASP.NET WebAPI工程,在Models文件夹下创建一个实体类:User,代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApi.Models{ public class User type: "get", url: "http://localhost:27221/api/Charging/GetByModel", contentType: "application/json", data: { ID: "1", NAME: "Jim", CREATETIME: "1988-09.
最近在写webapi,在写post请求接口时遇到了不少的问题,在此记录下来。 post请求的参数和get请求有点不一样,我们知道get请求的参数是通过url来传递的,而post请求则是通过http的请求体中传过来的,WebApipost请求也需要从http的请求体里面去取参数。 单个参数错误写法 //错误的js ajax post写法
  继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理。 这里我使用Jquery 来发起异步请求实现数据调用。   继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用。 一、无参数Get请求   一般的get请求我们可以使用jquery提供的$...
问题描述: Web Api 当使用Post提交的时候 由于只能接受一个参数 ,所以我们基本都会选择把所需要的参数,进行封装实体。 有的时候所需要的信息在其他两个实体中,还需要重新封装也不爽。 今天发现使用JObject 作为参数类型,可以避免自己创建实体。 引用:using Newtonsoft.Json.Linq;命名空间 public ResponsePar...
1. 导言 路由系统是请求消息进入ASP.NET Web API消息处理管道的第一道屏障,其根本目的在于利用注册的路由对请求的URL进行解析以确定目标HTTPController和Action的名称,以及与目标Action方法某个参数进行绑定的路由变量。 WebService和WCF的协议都是soap协议,数据的序列化和反序列化都是soap的格式。而WebAPI是基于Http协议,请求和返回格...
Java 后台可以使用 HttpServlet 类的 doPost() 方法接收前台发送的数据。doPost() 方法参数是 HttpServletRequest 和 HttpServletResponse 对象,分别用于获取请求信息和响应信息。 例如,下面是一个简单的 Servlet 类,用于接收前台发送的 POST 请求: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/receive-data") public class ReceiveDataServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求中的参数 String param1 = request.getParameter("param1"); String param2 = request.getParameter("param2"); // 处理请求数据 // ... // 设置响应状态码和响应头 response.setStatus(HttpServletResponse.SC_OK); response.setContentType("application/json"); // 写入响应数据 response.getWriter().println("{\"status\":\"ok\"}"); 然后,前台可以使用 XMLHttpRequest 或 fetch API 发送 POST 请求,例如: ```javascript fetch('/receive-data', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' body: 'param1=value1&param2=value2' .then(response => response.json()) .then(data => { console.log(data.status);