使用C# ASP.NET Web API开发供Unity WebGL使用的HTTP接口(二)

上一篇写到向数据库中添加虚拟的数据,在这篇文章中,我们将介绍如何创建控制器,然后读取到数据库中的内容。

8、创建控制器

在Controllers目录下添加控制器,选择“Web API 2 控制器 - 空”,我们将手工编写API程序的读取、添加、修改、删除各常用接口。控制器文件命名为StudentController.cs。
在这里插入图片描述
在这里插入图片描述
在StudentController.cs中添加如下代码。一个Get方法,用来读取数据

 private StudentContext db = new StudentContext();

        public IEnumerable<Student> Get()
        {
            return db.Students.AsEnumerable();
        }

编译后,点击运行,如果一切正常的话会出现以下XML格式的数据,说明数据读取成功。
在这里插入图片描述
运行的时候会弹出来一个浏览器界面,如下,注意这并不是错误,只需要在地址栏后面加上/api/student就可以了。完整地址:http://localhost:58890/api/student。其中58890是电脑自动随机生成的端口,每台机器生成的端口号可能不同。
在这里插入图片描述
访问成功的界面:这里我们获取到的是XML格式的数据。
在这里插入图片描述
接下来我们将访问到的数据转化为JSON格式。
这里我们需要修改App_Start目录下的WebApiConfig.cs文件,在//Web API 配置和服务的注释下添加以下代码:

// Web API 配置和服务
//去掉默认的XML格式
config.Formatters.Remove(config.Formatters.XmlFormatter);
var jsonFormatter = config.Formatters.JsonFormatter;
//将输出结果缩进显示
jsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented;
//将字段名称改成camelCase格式,即postalCode这样的json统一格式
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

再次运行,就可以看到如下结果:
在这里插入图片描述
到这里,利用ASP.NET Web API对数据库进行去取就算完成了。接下来就是对数据进行添加、修改和删除的操作。在StudentController中添加各种方法。
和添加操作类似,用Linq语句操作Entity Framework,代码非常简洁高效。不同的方法名也对应了不同的操作,Get对应读取操作,Post对应添加操作,Put对应修改操作,Delete对应删除操作。

添加操作

 		/// <summary>
		/// 添加
 		/// </summary>
  		/// <param name="student"></param>
  		/// <returns></returns>
        public HttpResponseMessage Post(Student student)
        {
            if (ModelState.IsValid)
            {
                db.Students.Add(student);
                db.SaveChanges();
                return Request.CreateResponse(HttpStatusCode.Created, student);
            }
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
        }

首先对传入的数据进行验证,如果验证通过,则添加到数据库中,否则输出错误信息。

修改

/// <summary>
        /// 修改
        /// </summary>
        /// <param name="friend"></param>
        /// <returns></returns>
        public HttpResponseMessage Put(Student friend)
        {
            if (ModelState.IsValid)
            {
                db.Entry(friend).State = EntityState.Modified;
                db.SaveChanges();
                var response = Request.CreateResponse(HttpStatusCode.OK, friend);
                return response;
            }
            return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
        }

删除

 /// <summary>
        /// 删除
        /// </summary>
        /// <param name="id">要删除的数据的ID</param>
        /// <returns></returns>
        public HttpResponseMessage Delete(int id)
        {
            var student = db.Students.Find(id);
            if (student != null)
            {
                db.Students.Remove(student);
                db.SaveChanges();
                return Request.CreateResponse(HttpStatusCode.OK, student);
            }
            return Request.CreateResponse(HttpStatusCode.NotFound);
        }

到这里所有的方法都写完了,下一篇将使用一个测试工具来测试这些API接口并在Unity WebGL中使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小温同学的账号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值