前言
本篇针对初初使用WebApi的同学们,比较基础,有兴趣的且看看。本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实体、数组等类型的参数如何传递。
一、get请求
对于取数据,我们使用最多的应该就是get请求了吧。下面通过几个示例看看我们的get请求参数传递。
1、基础类型参数
![f3182c37d5cf426c64a8b7d2e5a53ad5.png](https://i-blog.csdnimg.cn/blog_migrate/be773461ea156111c95092855a3b6dfe.jpeg)
![ea9b19da17ecba069ef6fed92a5b7062.png](https://i-blog.csdnimg.cn/blog_migrate/c2ac0b169fe25daf4dbbbe92ea820f55.jpeg)
参数截图效果
![d3d663b7bfb9585b371841cec4d19a78.gif](https://i-blog.csdnimg.cn/blog_migrate/0f153758ea0a3e215d187ada8f0636d8.gif)
这是get请求最基础的参数传递方式,没什么特别好说的。
2、实体作为参数
如果我们在get请求时想将实体对象做参数直接传递到后台,是否可行呢?我们来看看。
![37c4f0cb8c40c28a8228d93aa00fdc3e.png](https://i-blog.csdnimg.cn/blog_migrate/727ff2e96609c3e8ac8b02e4e95fd95f.jpeg)
![c965836825f334ffad46c312bf2018cd.png](https://i-blog.csdnimg.cn/blog_migrate/d2ce8cb3c956938e0168bddc6e1844dd.jpeg)
![bb1d74e7e42d7d922c637ecc3202345f.png](https://i-blog.csdnimg.cn/blog_migrate/688d088d0e756b80de6ea662c4ef4061.jpeg)
测试结果
![98854d89c9554e64007fb4ad31685503.gif](https://i-blog.csdnimg.cn/blog_migrate/7cafd9750a2a017908259f6290e322ed.gif)
由上图可知,在get请求时,我们直接将json对象当做实体传递后台,后台是接收不到的。这是为什么呢?我们来看看对应的http请求
![012af3cee58d1cfa4263cfd7bf7b4492.png](https://i-blog.csdnimg.cn/blog_migrate/51de84e9cb4121963911805dbfa64482.jpeg)
原来,get请求的时候,默认是将参数全部放到了url里面直接以string的形式传递的,后台自然接不到了。
原因分析:还记得有面试题问过get和post请求的区别吗?其中有一个区别就是get请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),而post请求则是放在http协议包的包体中。
根据园友们的提议,Get请求的时候可以在参数里面加上[FromUri]即可直接得到对象。还是贴上代码:
![440ca185f9ae4655e1864e4a0e34df24.png](https://i-blog.csdnimg.cn/blog_migrate/651862cecd4f5ba831e52e83bfa81678.jpeg)
![c43cdf5a47d2be7d531760675b743920.png](https://i-blog.csdnimg.cn/blog_migrate/60bc41b839997b09137287f7351ec78b.jpeg)
得到结果:
![8c181f49433d7e9d57bca0623dcb4e2c.png](https://i-blog.csdnimg.cn/blog_migrate/42332599022751956c6c44fb13ba4fa6.jpeg)
如果你不想使用[FromUri]这些在参数里面加特性的这种“怪异”写法,也可以采用先序列化,再在后台反序列的方式。
![638a589a5bfd6fe7e7c63f9fd219b45f.png](https://i-blog.csdnimg.cn/blog_migrate/4ebfe3f35505ed6c9381170e09f128a9.jpeg)
![5268ff3b256679d972e73d60d2c3b184.png](https://i-blog.csdnimg.cn/blog_migrate/5039934b2cd79ebbae29ef46c013b340.jpeg)
![b5a38fe4763e8e611ed14426181a93f7.png](https://i-blog.csdnimg.cn/blog_migrate/652a2804aea14353e538b47e4e9a70fc.jpeg)
这样在后台得到我们序列化过的对象,再通过反序列化就能得到对