Web API中的传参方式

在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete /Put的传参方式

一、Get传参

  get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,数据放在url的QueryString中。

(一)简单类型

$(function () {
    $.ajax({
        type: ‘get‘,
        url:‘http://localhost:60761/api/News‘,
        data: {Id:1,Title:"新闻1",Desc:‘这是新闻1‘},
        success: function (data) {
        console.log(data)
        }
    })
});

(二)复杂类型

  如果我们想通过get传输复杂类型,如把Action中接收的参数是News类型来接受,发现不能通过get直接传参给复杂类型,如下图

为了实现get方式传参给复杂类型,这里提供了两种解决办法:

1.FromUri属性

FromUri的作用是强制从uri中给复杂类型参数赋值,只需要在上边代码的参数前边加上这个属性就可以了,运行结果如下:

2.序列化

$(function () {
    $.ajax({
        type: ‘get‘,
        url: ‘http://localhost:60761/api/News‘,
        data: { newstr: JSON.stringify({ Id: 1, Title: "新闻1", Desc: ‘这是新闻1‘ }) },
        success: function (data) {
            console.log(data)
        }
    })
});这里我们用JavaScriptSerializer进行序列化的,实际开发中我们也可以使用Json.net进行,Json.net的效率要更高些。

二、post传参

post传输数据时,大小基本没有限制,数据存放在请求的报文体的Form中,用户再url中看不到数据,相对较安全,但是监听器也能很容易地检测到Form中的数据。

(一)传单个简单类型(FromBody)

$(function () {
    $.ajax({
        type: ‘post‘,
        url: ‘http://localhost:60761/api/News‘,
        data: { "": "新闻1" },//这里的key必须为空
        success: function (data) {
             console.log(data)
        }
    })
});

(二)传多个简单类型(dynamic)

传一个简单类型的时候也可以采用这种方式,这种方式的好处是可以不用写data:{"","value"}这样不好看的代码。

$(function () {
    $.ajax({
        type: "post",
        contentType: ‘application/json‘,//这个必须加上
        url: "http://localhost:60761/api/News",
        data: JSON.stringify({ Id: "1", Title: "这是新闻1", Desc: "这是新闻1" }),
        success: function (data, status) { }
    });
});        

(三)传一个复杂类型

$(function () {
    $.ajax({
        type: "post",
        url: "http://localhost:60761/api/News",
        data: { Id: "1", Title: "这是新闻1", Desc:"这是新闻1"},
       success: function (data, status) { }
    });
});

(四)简单类型数组

var idArr = [1, 2, 3, 4];
$(function () {
    $.ajax({
        type: "post",
        contentType: ‘application/json‘,
        url: "http://localhost:60761/api/News",
        data: JSON.stringify(idArr),
        success: function (data) { }
    });
});

(五)复杂类型数组

var newsArr = [
    { Id: 1, Title: "新闻1", Desc: "这是新闻1" },
    { Id: 2, Title: "新闻2", Desc: "这是新闻2" },
    { Id: 3, Title: "新闻3", Desc: "这是新闻3" }
];

$(function () {
    $.ajax({
        type: "post",
        contentType: ‘application/json‘,
        url: "http://localhost:60761/api/News",
        data: JSON.stringify(newsArr),
        success: function (data) { }
    });
});

注:put和delete的传参方式和Post一样,这里不再重复。

参考文档:

1.http://www.cnblogs.com/landeanfen/p/5337072.html

原文地址:https://www.cnblogs.com/wyy1234/p/9492786.html

时间: 2024-10-14 00:37:45

Web API中的传参方式的相关文章

react中的传参方式

react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a name='a' age={16}/>,app) 在渲染的时候,直接给挂载的组件传参. 2,父子传参 父子传参可以用props和ref两种方式,1,props方式传参,父组件通过改变自己的参数并且通过props将状态传递给子组件,并在子组件中显示.2,通过ref传参,这种方式是通过子组件自己的方法改变自己的

axios中post传参方式

最近做vue项目,做图片上传的功能,使用get给后台发送数据,后台能收到,使用post给后台发送图片信息的时候,vue axios post请求发送图片base64编码给后台报错HTTP 错误 414请求一直报错,显示 request URI too large后台显示一直没有收到数据 参数为null.网上查看了很多资料,才知道axios post传参的问题. this.$axios({ method: 'post', url:url, params: { is_iso:1, goods_id:

C++中的传参方式

1.参数传递的概念 所谓参数传递就是用函数调用所给出的实参(实际参数)向函数定义所给出的形参(形式参数)设置初始值的过程. 在c++中,调用函数时有三种参数传递方式,分别为: (1)传值调用: (2)传址调用(即是传指针): (3)传引用: 总体上参数传递可以分为两类,由形参的类别决定:值调用与引用调用.除了定义为引用类型的形参外,其他类型的形参都是对应着值调用.指针传递也是值调用,只是它是值传递的是地址.下面对这三种参数传递方式进行详细的说明: 值传递: 值传递时,实参被拷贝了一份,然后在函数

mock和axios常见的传参方式

第一次接手项目,传参方式还有些吃力,因此做一下总结. 首先我们需要会看swagger中的接口.里面写了某个接口需要接收什么样的值,前端怎么传递这个值 在mock中的传参方式: mock中传参的方式有两个参数,一个是path对象,一个是data对象. path想当于拼接在url地址上的参数, data是url后面的参数. 1.get请求 如果url后面有opts的参数,则说明他需要传递参数.要不就不用传递了,直接写个url就好了,不用拼接参数.(请看下图) 图一是接口 图二是调用了这个接口. 这个

在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式,虽然Web API或者WCF方式的调用,相对直接连接数据库方式,响应效率上略差一些,不过扩展性强,也可以调动更多的设备接入,包括移动应用接入,网站接入,Winfrom客户端接入,这样可以使得服务逻辑相对独立,负责提供接口即可.这种方式中最有代表性的就是当前Web API的广泛应用,促进了各个接入端

ASP.NET Web API中实现版本的几种方式

在ASP.NET Web API中,当我们的API发生改变,就涉及到版本问题了.如何实现API的版本呢? 1.通过路由设置版本 最简单的一种方式是通过路由设置,不同的路由,不同的版本,不同的controller. config.Routes.MapHttpRoute( name: "Food", routeTemplate: "api/v1/nutrition/foods/{foodid}", defaults:... ) config.Routes.MapHttp

vue请求中 post get传参方式是不同的哦

我在学习vue,项目中post请求,get请求都用到了,我发现传参方式是不一样的. post请求的例子: checkin (){ this.$http.post('my url',{ mobilePhone:this.phone, password:this.password },{ emulateJSON: true } ).then(function(res){ this.$root.userid=res.data.userid; console.log(this.$root.userid)

ASP.NET Web API中的参数绑定总结

ASP.NET Web API中的action参数类型可以分为简单类型和复杂类型. HttpResponseMessage Put(int id, Product item) id是int类型,是简单类型,item是Product类型,是复杂类型. 简单类型实参值从哪里读取呢?--一般从URI中读取 所谓的简单类型包括哪些呢?--int, bool, double, TimeSpan, DateTime, Guid, decimal, string,以及能从字符串转换而来的类型 复杂类型实参值从

【ASP.NET Web API教程】4.3 ASP.NET Web API中的异常处理

参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-delete.html http://www.yuanjiaocheng.net/webapi/Consume-web-api.html http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-get.html http://www.yuanjiaocheng.net/webapi/mvc-consume-webapi-po