C# WebAPI创建及具体实现

Web API的介绍

Web API 其实就是应用程序编程接口,在实际的生活中,我们使用的软件有很多都是从API中获取的数据,比如:天气预报,微信支付等都是使用的接口,这样我们在编程过程中就可以使用别人已经写好的接口,可以省很多时间和精力,当然一些我们自己使用的,就需要我们自己去编写了,下面介绍用C#写API接口的具体实现方法。

Web API项目在VS2015中的创建

新建ASP.NET Web应用程序
在这里插入图片描述
选择空,并把下面的Web API勾上
在这里插入图片描述
点击确定,一个Web API项目就完成了。

添加Web API控制器

右键单击Controllers文件夹,选择控制器
在这里插入图片描述
在MVC项目中,选择MVC5控制器,而Web API项目中,选择Web API 2控制器。

添加EF数据实体

右键单击Models,选择新建项–数据–ADO.NET数据模型
在这里插入图片描述
当你第一次新建的时候是这样的,我们需要新建连接
在这里插入图片描述
因为我们使用的是本地服务器,所以服务器名为.,然后使用SQL Server身份验证,输入数据库的管理员账号和密码。
在这里插入图片描述
输入完成之后的界面上是这样的,然后在下面选择你要操作的数据库
在这里插入图片描述
最后一步
在这里插入图片描述
这样一来,数据实体就建好了,但是数据库每一次结构的变化都需要对实体进行更新,当然,数据变化不需要更新

对数据实体的操作

需要先引用Model

using Test.Models;//Test是项目的名称,Models是实体所在的项目文件夹,自己根据需要进行改变
namespace Test.Controllers
{
    public class HomeController : ApiController
    {
        //实例化实体对象,也可以在每个方法中实例化,这里实例化一个全局的,就可以少写很多代码
        Demo2017Entities db = new Demo2017Entities();
    }
}

API的路由

在WebApiConfig.cs文件中写着默认的路由规则

			config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

但是我们需要声明API的类型(Get,Post,Put,Delete)
1.在方法名称的前面添加这几个关键字,比如:

        public IHttpActionResult Getem()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }

Web API需要用Postman来测试,上面的接口,我们在调用的时候,地址为:http://localhost:60668/api/Home/Getem
如果,我们把代码写成下面的样子,是不能调用的

        public IHttpActionResult em()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }

因为,在上面已经说过了,必须在方法前面声明调用的类型,如果不写类型,在Postman中会显示下面的错误

{
    "Message": "The requested resource does not support http method 'GET'."
}

但是这样写,也是有弊端的,请看下面的代码

        public IHttpActionResult Getem()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }
        public IHttpActionResult Getom()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }

这是两个名称不一样的代码,但是他们两个都是Get请求,所以在调用的时候,会提示错误:一个控制器中有两个Gte请求,所以我们需要自定义路由和声明方法的类型
常规的写法

        [HttpGet]
        [Route("api/home/getem")]
        public IHttpActionResult Getem()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }

        [HttpGet]
        [Route("api/home/getom")]
        public IHttpActionResult Getom()
        {
            var list = db.Employees.ToList();
            return Json(list);
        }

第一个中括号内声明方法的类型,有HttpGet,HttpPost,HttpPut,HttpDelete四种,第二个中括号中自定义路由,通俗来讲,就是自定义访问地址
这样一来,我们来调用接口,就不需要在注意那些繁琐的规则了
调用第一个接口:http://localhost:60668/api/home/getem
调用第一个接口:http://localhost:60668/api/home/getom
整个Web API的建项目和路由规则就完成了

Linq语句操作数据库

掌握了Web API的编写,我们还需要了解数据的操作,不然,之前的工作就是白干。
普通的查询

var list = db.Employees.ToList();//直接查找整个表
var lists=db.Employees.Where(a => a.CompanyId == 12);//查找Employees表中CompanyId等于12的数据
var listss = db.Employees.Where(a => a.CompanyId == 12&&a.Name=="dashazi");//查找Employees表中CompanyId等于12的数据并且Name等于dahsazi的数据
var listsss=from a in db.Employees
                      join b in db.Companies
                      on a.CompanyId equals b.Id
                      where a.Id==12
                      select new{a,b};
 //两表连接查询,A表joinB表onA表的某一行equalsB表的某一行
 //这种写法的情况下,两个列相等不能直接用==,需要用equals

这就是基本的操作,具体的增删改查参考上一篇文章https://blog.csdn.net/FenfsfDensting/article/details/83474643

  • 12
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!对于C# Web API接口开发,有以下一些常见的步骤和注意事项: 1. 创建一个新的C# Web API项目:使用Visual Studio或其他适合的IDE,创建一个新的C# Web API项目。 2. 定义和设计接口:根据您的需求,确定接口的功能和数据结构。设计良好的接口能够提高代码的可读性和可维护性。 3. 实现控制器:在项目中创建控制器类,控制器类负责处理HTTP请求并返回响应。您可以使用ASP.NET Core框架中的[ApiController]特性来简化一些操作。 4. 定义路由:使用ASP.NET Core框架中的路由特性(如[HttpGet]、[HttpPost]等)来定义API的路由地址和请求方法。 5. 实现业务逻辑:在控制器中实现具体的业务逻辑,可以调用其他服务、数据库或外部API来完成相关操作。 6. 处理数据验证和错误处理:在API接口中进行输入数据的验证,并合理处理可能发生的错误,返回合适的HTTP状态码和错误信息。 7. 编写单元测试:编写单元测试来验证API接口的正确性和稳定性,可以使用xUnit、NUnit等测试框架进行单元测试。 8. 部署和发布:将API应用程序部署到适当的环境中,可以是本地IIS、云服务(如Azure、AWS)等。 需要注意的是,C# Web API开发中应该考虑安全性、性能和可扩展性等方面的需求,同时也要遵循良好的编码规范和最佳实践来提高代码质量。 希望以上信息对您有所帮助!如果您还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值