.Net WebApi基本操作

一、服务端

1.新建webapi项目

2.配置WebApiConfig

public const string DEFAULT_ROUTE_NAME = "DB";// DB指数据库上下文
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DEFAULT_ROUTE_NAME",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.EnableSystemDiagnosticsTracing();
}

3.在models文件新建studentInfo模型

[Table("studentInfo")]
public class studentInfo
{
[Key]
public int Id { get; set; }
/// <summary>
/// 学号
/// </summary>
public int studentId { get; set; }
/// <summary>
/// 学生姓名
/// </summary>
public string studentName { get; set; }
/// <summary>
/// 联系方式
/// </summary>
public string contact { get; set; }
}

4.在models文件中添加DB,数据库上下文, DB要继承DbContext

public DbSet<studentInfo> sInfo { get; set; }

5.在models文件中添加接口IstudentRepository

/// <summary>
/// 获得所有人
/// </summary>
/// <returns></returns>
IEnumerable<studentInfo> GetAll();
/// <summary>
/// 根据ID查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
studentInfo Get(int id);
/// <summary>
/// 添加
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
studentInfo Add(studentInfo info);
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
void Remove(int id);
/// <summary>
/// 更新
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
bool Update(studentInfo info);

 6.在models文件中添加仓库实现studentRepository

public class studentRepository : IstudentRepository
{
DB db = new DB();
private List<studentInfo> _people = new List<studentInfo>();

public IEnumerable<studentInfo> GetAll()
{
var model = db.sInfo.OrderByDescending(c => c.Id).ToList();
return model;
}

public studentInfo Get(int id)
{
var queryData = db.sInfo.FirstOrDefault(c => c.Id == id);

return queryData;
}

public studentInfo Add(studentInfo info)
{
if (info == null)
{

throw new ArgumentNullException("info");

}

var addmodel = db.sInfo.Add(info);
db.SaveChanges();
return addmodel;
}

public void Remove(int id)
{

var model = db.sInfo.Find(id);
db.sInfo.Remove(model);
db.SaveChanges();

}

public bool Update(studentInfo Info)
{
if (Info == null)
{

return false;
}

else
{
var model = db.sInfo.FirstOrDefault(c => c.Id == Info.Id);
model.studentId = Info.studentId;
model.studentName = Info.studentName;
model.contact = Info.contact;
var entry = db.Entry(model);
entry.Property(c => c.studentId).IsModified = true;
entry.Property(c => c.contact).IsModified = true;

entry.Property(c => c.studentName).IsModified = true;
db.SaveChanges();

return true;
}

}
}

 7.配置web.config

<add name="DB" providerName="System.Data.SqlClient" connectionString="Data Source=.;Initial Catalog=WebApiDB;Integrated Security=SSPI; User ID=sa; password=123456" />

8.在controllers中添加apiController为PersonController

static readonly IstudentRepository databasePlaceholder = new studentRepository();
/// <summary>
/// 所有人数
/// </summary>
/// <returns></returns>
public IEnumerable<studentInfo> GetAllPeople()
{
return databasePlaceholder.GetAll();
}

/// <summary>
/// 查询
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public studentInfo GetPersonByID(int id)
{
studentInfo person = databasePlaceholder.Get(id);
if (person == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return person;
}
/// <summary>
/// 添加
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
public HttpResponseMessage PostPerson(studentInfo person)
{
person = databasePlaceholder.Add(person);
string apiName = MyWebApiDemo.WebApiConfig.DEFAULT_ROUTE_NAME;
var response = this.Request.CreateResponse<studentInfo>(HttpStatusCode.Created, person);
string uri = Url.Link(apiName, new { id = person.Id });
response.Headers.Location = new Uri(uri);
return response;
}
/// <summary>
/// 更新
/// </summary>
/// <param name="person"></param>
/// <returns></returns>
public bool PutPerson(studentInfo person)
{
if (!databasePlaceholder.Update(person))
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return true;

}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
public void DeletePerson(int id)
{

studentInfo person = databasePlaceholder.Get(id);

if (person == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}

databasePlaceholder.Remove(id);

}

二、客户端

private const string url = "http://localhost:50043/";
public ActionResult Index()
{
List<studentInfo> people = GetAllPerson();
return View(people);
}
/// <summary>
/// 获得所有学生信息
/// </summary>
/// <returns></returns>
static List<studentInfo> GetAllPerson()
{
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync(url + "api/person").Result;
return response.Content.ReadAsAsync<List<studentInfo>>().Result;
}
public ActionResult Delete(int id)
{
DeletePerson(id);
return RedirectToAction("Index");
}
/// <summary>
/// 删除
/// </summary>
/// <param name="id"></param>
static void DeletePerson(int id)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
var relativeUri = "api/person/" + id.ToString();
var response = client.DeleteAsync(relativeUri).Result;
client.Dispose();
}
static studentInfo GetPerson(int id)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = client.GetAsync(url + "api/person/" + id).Result;

return response.Content.ReadAsAsync<studentInfo>().Result;
}

public ActionResult Update(int id)
{
studentInfo model = GetPerson(id);
return View(model);
}
[HttpPost]
public ActionResult Update(studentInfo info)
{

UpdatePerson(info);

return RedirectToAction("Index");
}

static bool UpdatePerson(studentInfo info)
{

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
var response = client.PutAsJsonAsync("api/person", info).Result;
bool b= response.Content.ReadAsAsync<bool>().Result;
return b;
}
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult Create(studentInfo info)
{
JObject newPerson = AddPerson(info);
return RedirectToAction("Index");
}
static JObject AddPerson(studentInfo info)
{

HttpClient client = new HttpClient();

client.BaseAddress = new Uri(url);

var response = client.PostAsJsonAsync("api/person", info).Result;

return response.Content.ReadAsAsync<JObject>().Result;

}

时间: 2024-10-14 04:19:30

.Net WebApi基本操作的相关文章

Web APi入门之基本操作(一)

最近学习了下WebApi,WebApi是RESTful风格,根据请求方式决定操作.以博客的形式写出来,加深印象以及方便以后查看和复习. 1.首先我们使用VS创建一个空的WebApi项目 2.新建实体以及控制器类 1 public class Product 2 { 3 public int Id { set; get; } 4 public string Name { set; get; } 5 public string Description { set; get; } 6 } 1 publ

WebAPI 身份认证解决方案——Phenix.NET企业应用软件快速开发平台.使用指南.21.WebAPI服务(一)

21   WebAPI服务 ASP.NET Web API,是微软在.NET Framework 4.5上推出的轻量级网络服务框架,虽然作为ASP.NET MVC 4的一部分,但却是一套全新的.独立的服务平台开发框架,可支持多种(包括移动)客户端的访问,非常适合于网络平台应用的开发. Phenixヾ在ASP.NET Web API服务框架.及其自身业务框架(封装CSLA)基础上,为跨平台应用系统的实现提供了全面的数据服务,并为服务访问提供了身份认证.权限验证等辅助功能. 21.1   启动服务

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

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

[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

[.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建>项目,选择Web>ASP.NET Web 应用程序 (2)在新项目MyFirstWebApp对话框中,选择ASP.NET 5模板>Web Application 由于是RC版,这里的”添加单元测试“暂时不能选,上面的WebForms MVC WebAPI将合并,前面一节介绍过了,因此也不需要再选

WebAPI生成可导入到PostMan的数据

一.前言 现在使用WebAPI来作为实现企业服务化的需求非常常见,不可否认它也是很便于使用的,基于注释可以生成对应的帮助文档(Microsoft.AspNet.WebApi.HelpPage),但是比较便利和可持久化的调试官方却没有相应的集成,虽然我们可以使  用诸如Fiddler.Swagger.PostMan.HttpClient.单元测试等等来调试我们的WebAPI,但是却依然不是很方便,对于公司来说也需要有一种可以统一.可持久化.且行之有效的规范. 调试接口我希望他能达到以下3点: 1:

WebAPI 权限控制解决方案——Phenix.NET企业应用软件快速开发平台.使用指南.21.WebAPI服务(三)

21.1   数据服务 21.1.1基本操作功能 Phenixヾ的数据服务,提供了如下的基本操作: 功能 Type URI 参数 完整获取实体集合对象 GET api/Data 分页获取实体集合对象 GET api/Data pageSize=[分页大小]&pageNo=[分页号] 按条件获取实体集合对象 GET api/Data id=[条件对象] 按条件分页获取实体集合对象 GET api/Data id=[条件对象]&pageSize=[分页大小]&pageNo=[分页号]

使用OAuth打造webapi认证服务供自己的客户端使用

一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前的版本是2.0版.注意是Authorization(授权),而不是Authentication(认证).用来做Authentication(认证)的标准叫做openid connect,我们将在以后的文章中进行介绍. 二.名词定义 理解OAuth中的专业术语能够帮助你理解其流程模式,OAuth中常用的名词术语有4个,为了便于理解这些术语,我们先假设一个很常见的授权场景: 你访问了一个日志网站(thir

Centos7.2部署.Net Core2.0 WebApi

部署前准备 1.VisualStudio2017+.netcore2.0SDK 2.Centos7.2 3.SecureCRT,Xftp(根据自己喜好) 创建WebApi项目 修改Program.cs中的BuildWebHost方法为(不改也可,core默认使用Kestrel作为Server) public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel()

搭建连接MySql的三层架构的ASP.NetCore2.0的WebApi

里我们用三层架构搭建一个连接MySql的ASP.netCore模板的WebApi项目 首先添加WebApi项目(ASP.NetCore版本) 右键解决方案>新建项目> 选择Web>ASP.NET Core Web应用程序(.NET Core) 选择Web API 此时的目录结构: 添加实体层Entity 右键添加>新建项目>.Net Core类库 添加后的目录结构 BaseEntity: using System; using System.Collections.Gener