asp.net webapi 使用小结

一星期前公司用webapi处理一些事情,自己总结一下用法。

1.创建一个空的webapi会默认有一下几个方法。

    public class ValueController : ApiController
    {
        // GET api/value
        public IEnumerable<string> Get()
        {

            return new string[] { "value1", "value2" };
        }

        // GET api/value/5
        public string Get(int id)
        {

            return "value";
        }

        // POST api/value
        public void Post([FromBody]string value)
        {

        }

        // PUT api/value/5
        public void Put(int id, [FromBody]string value)
        {

        }

        // DELETE api/value/5
        public void Delete(int id)
        {

        }
    }

第一个IEnumerable<string> Get()

      $.ajax({
            url: "/api/value",
            type: "get",
            success: function (data) {
                alert(data);
            }
        });

第二个 string Get(int id)

    $.ajax({
            url: "/api/value/1",
            type: "get",
            success: function (data) {
                alert(data);
            }
        });

第三个 void Post([FromBody]string value) ,调用的时候比较特殊,我在data前面的键值给空的时候才能把值传输到后台去。

    $.ajax({
            url: "/api/value",
            type: "post",
            data: { ‘‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

或者改造后台接收方法。用实体来接收值,可以接收到。

        public class PostModel
        {
            public string value { get; set; }
        }
        public string Post([FromBody]PostModel value)
        {
            return "ok";
        }
        $.ajax({
            url: "/api/value",
            type: "post",
            data: { ‘value‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

第四个 string Put(int id, [FromBody]PostModel value) 调用的时候,id必须包含在路径中,才能获取到。放在接收的实体中也是没用的。

    $.ajax({
            url: "/api/value/1",
            type: "Put",
            data: { ‘value‘: "test" },
            success: function (data) {
                //alert(data);
            }
        });

第五个 string Delete(int id) 调用跟第一个唯一的区别需要标明type:“Delete”

这是默认的几种使用方法,但是自己使用的时候感觉约束蛮多。然后我把它们全删了。

用法上不规范,但是用起来感觉比较舒服,感觉代码还是怎么写起来舒服怎么来吧,自己在api路由这里加了一项{action}这样用起来看着跟mvc区别不大。

    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }

代码就可以这样写了。

    public class ValueController : ApiController
    {

        public List<string> GetList()
        {

            return new List<String> { "value1", "value2" };
        }

        public List<string> GetTestList()
        {

            return new List<String> { "value1", "value2" };
        }

    }
       $.ajax({
            url: "/api/value/GetTestList",
            type:"post",
            success: function (data) {

            }
        });

对于webapi传参数,默认的都是从路径里提取的也就是get方式的传参。

     public List<string> GetList(string id,string name)
        {

            return new List<String> { "value1", "value2" };
        }
    $.ajax({
            url: "/api/value/GetList",
            type: "get",            data: { "id": "1", "name": "三" },
            success: function (data) {

            }
        });

    $.ajax({
            url: "/api/value/GetList?id=1&name=三",
            type: "get",
            success: function (data) {

            }
        });
 

如果需要传的字符串参数很多,get方式会报错,可以用post方式,这里需要注意的是不能用get开头,要么它只认get提交

    public class PostModel
    {
        public string value { get; set; }
        public string id{ get; set; }
    }

        public List<string> List([FromBody]PostModel value)
        {

            return new List<String> { "value1", "value2" };
        }
    $.ajax({
            url: "/api/value/List",
            type: "post",
            data: { "id": "1", "value": "01234567890123456789012345678901234567890123456789" },
            success: function (data) {

            }
        });

asp.net webapi 使用小结,布布扣,bubuko.com

时间: 2024-12-22 10:15:46

asp.net webapi 使用小结的相关文章

ASP.NET WebApi 增删改查

本篇是接着上一篇<ASP.NET WebApi 入门>来介绍的. 前言 习惯说 CRUD操作,它的意思是"创建. 读取. 更新和删除"四个基本的数据库操作.许多 HTTP 服务通过REST的 Api 进行CRUD 操作.在本教程中,生成非常简单的 web API 来管理产品的列表.每个产品将包含名称. 价格和类别,再加上一个产品 id.访问Uri对应如下: 行动 HTTP 方法 相对 URI 获取所有产品的列表 GET /api/Product 根据ID得到一个产品 GET

ASP.NET WebApi 开放数据

概述 开放式数据协议(OData) 是用于在 web 数据访问协议.它提供统一的方式来构造数据. 查询的数据和操纵数据集通过 CRUD 操作.它支持 AtomPub (XML) 和 JSON 格式.它还定义的方式来公开元数据有关的数据.客户端可以使用元数据来发现的类型信息和数据集的关系. ASP.NET Web API 容易地创建一个数据集的 OData 终结点.您可以控制到底哪些 OData 操作终结点支持.你可以承载多个 OData 端点,除了非 OData 端点.你有你的数据模型后, 端业

ASP.NET WebAPI 08 Message,HttpConfiguration,DependencyResolver

Message WebAPI作为通信架构必定包含包含请求与响应两个方法上的报文,在WebAPI它们分别是HttpRequestMessage,HttpResponseMessage.对于HttpResponseMessage之前在WebAPI返回结果中有应用. HttpRequestMessage 请求报文包含请求地址(RequestUri),请求方法(Method),头信息(Headers),报文信息(Content)以及Http版本(Versions) public class HttpRe

使用ASP.Net WebAPI构建REST服务(六)——Self-Host

Asp.Net WebAPI生成的是一个程序集,并不是独立的进程,因此,要运行的时候必须将其承载在相应的宿主上,一般比较常见的是IIS承载.很多时候,我们为了简化部署或者功能集成,需要将其承载到独立的进程上,这种方式一般称之为Self-Host,本文就简单的介绍一下WebAPI的SefHost方法. 首先在Nuget上安装Microsoft.AspNet.WebApi.SelfHost库. 附上我们的WebAPI控制器 publicclassValuesController : ApiContr

使用ASP.Net WebAPI构建REST服务(四)——参数绑定

默认绑定方式 WebAPI把参数分成了简单类型和复杂类型: 简单类型主要包括CLR的primitive types,(int.double.bool等),系统内置的几个strcut类型(TimeSpan.Guid等)以及string.对于简单类型的参数,默认从URI中获取. 复杂类型的数据也可以直接作为参数传入进来,系统使用media-type formatter进行解析后传给服务函数.对于复杂类型,默认从正文中获取, 例如,对于如下函数 HttpResponseMessage Put(int

Asp.net WebApi + EF 单元测试架构 DbContext一站到底

其实关于webapi和Ef service的单元测试我以前已经写过相关文章,大家可以参考: Asp.net WebAPI 单元测试 单元测试 mock EF 中DbContext 和DbSet Include 先看一下项目结构图: 这个demo非常简单,UTWebApi.Data 是纯粹的数据定义,UTWebApi.Service是我们的业务服务逻辑层,UTWebApi 是我们webapi的实现,UTWebApi.Tests就是测试项目. 数据层: BloggerDbContext的构造函数一般

使用ASP.Net WebAPI构建REST-ful 服务(一)——简单的示例

由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法.本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务. 首先创建一个Asp.Net Web应用程序(我这里用的是Visual Studio 2013,它已经内置了Web API2). 在出来的模板中选择Empty(空项目),并勾选WebAPI.点击确定后,就创建了一个空的WebAPI服务. 此时只有一个空项目,还没有任何功能,在进行下一步之前,首先我们来看一下REST的基本操作模

[原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法

首先,请允许我说一句:shit! 因为这个问题不难,但是网上有关 ASP.NET WEBAPI的资料太少.都是PHP等等的. 我也是在看了某位大神的博客后有启发,一点点研究出来的. 来看正题! 1.微信公众平台的接入方法,无非4个参数(signature, timestamp, nonce, echostr)加1个Token(两边对应) 2.Token, timestamp, nonce字典排序后,按照字符串“SHA1”加密.得出一串字符串 tmpStr(转化为小写) 3.然后比对 tmpStr

使用ASP.Net WebAPI构建REST服务(二)——路由

REST并没有像传统的RPC服务那样显式指定了服务器函数的访问路径,而是将URL根据一定的规则映射为服务函数入口,这个规则就称之为路由.Asp.Net WebAPI的路由方式和Asp.Net MVC是相同的,它支持两种路由方式,传统的路由映射和特性路由. 路由规则WebApiConfig.cs中定义,它的默认内容如下: publicstaticclassWebApiConfig    {        publicstaticvoid Register(HttpConfiguration con