ASP.NET Core Web API 开发-RESTful API实现
2016-08-01 17:04
841 查看
ASP.NET Core Web API 开发-RESTful API实现
REST 介绍:
符合REST设计风格的Web API称为[b]RESTful API。[/b]
具象状态传输(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士于2000年在他的博士论文 "Architectural Styles and the Design of Network-based Software Architectures" 中提出来的一种万维网软件架构风格。
目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务执行图书查询;雅虎提供的Web服务也是REST风格的。
符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:
直观简短的资源地址:URI,比如:http://example.com/resources/。
传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。
对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。
PUT和DELETE方法是幂等方法。GET方法是安全方法(不会对服务器端有修改,因此当然也是幂等的)。
不像基于SOAP的Web服务,RESTful Web服务并没有“正式”的标准。这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但大部分RESTful Web服务实现会使用HTTP、URI、JSON和XML等各种标准。
呈现某一件商品,
下单购买,
常用的HTTP动词有下面五个(括号里是对应的SQL命令)
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
下面我们就来在ASP.NET Core Web API 中实现。
例子以用户为例,对用户的各个更改分别对应不同的HTTP 动词。
首先我们创建一个ASP.NET Core Web API 应用。可以参考之前博文: /article/7547854.html
然后我们添加EF Core,来操作数据库。EF Core 教程:/article/7578949.html
首先我们来新建一个类 User.cs
然后添加EF Core引用及创建DataContext.cs,并做配置。
EF Core 1.0 已经发布了,所以引用及配置都可以更新一下。
配置对应做更新
最后使用dotnet ef 命令来创建数据库。
下面就来正式Web API 的开发。
这里我们添加一个Web API 控制器 UsersController 。
会默认为我们生成GET POST PUT DELETE 对应的方法。这里我们就来具体实现。
UsersController.cs
实现好以后,我们使用Chrome 应用 ARC 来调试。
增加-》Post:
{"Id":1,"UserName":"LineZero","PassWord":"123456"}
http://localhost:5000/api/users
多个查询-》Get:
http://localhost:5000/api/users
单个查询-》Get(int id):
http://localhost:5000/api/users/1
修改-》Put:
{"UserName":"LineZeroASPNETCore","PassWord":"123456789"}
http://localhost:5000/api/users/1
删除-》Delete:
http://localhost:5000/api/users/1
对应的Http 操作也都实现了。数据库相关操作也在代码里。
对于ASP.NET Core Web API REST 风格的一种代码实现。
ASP.NET Core Web API 默认JSON序列化的话,会将属性名自动转化为小写,这里我们只需要一句配置即可解决。
本文示例代码:https://github.com/linezero/Blog/tree/master/ASPNETCoreAPI
参考链接:
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
REST 介绍:
符合REST设计风格的Web API称为[b]RESTful API。[/b]
具象状态传输(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士于2000年在他的博士论文 "Architectural Styles and the Design of Network-based Software Architectures" 中提出来的一种万维网软件架构风格。
目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务执行图书查询;雅虎提供的Web服务也是REST风格的。
符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:
直观简短的资源地址:URI,比如:http://example.com/resources/。
传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。
对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。
PUT和DELETE方法是幂等方法。GET方法是安全方法(不会对服务器端有修改,因此当然也是幂等的)。
不像基于SOAP的Web服务,RESTful Web服务并没有“正式”的标准。这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但大部分RESTful Web服务实现会使用HTTP、URI、JSON和XML等各种标准。
实现举例
例如,一个简单的网络商店应用,列举所有商品,GET http://www.store.com/products
呈现某一件商品,
GET http://www.store.com/product/12345
下单购买,
POST http://www.store.com/order <purchase-order> <item> ... </item> </purchase-order>
常用的HTTP动词有下面五个(括号里是对应的SQL命令)
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
下面我们就来在ASP.NET Core Web API 中实现。
例子以用户为例,对用户的各个更改分别对应不同的HTTP 动词。
首先我们创建一个ASP.NET Core Web API 应用。可以参考之前博文: /article/7547854.html
然后我们添加EF Core,来操作数据库。EF Core 教程:/article/7578949.html
首先我们来新建一个类 User.cs
public class User { public int Id { get; set; } public string UserName { get; set; } public string Password { get; set; } }
然后添加EF Core引用及创建DataContext.cs,并做配置。
EF Core 1.0 已经发布了,所以引用及配置都可以更新一下。
Install-Package Microsoft.EntityFrameworkCore.Sqlite
配置对应做更新
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
"tools": { "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
最后使用dotnet ef 命令来创建数据库。
dotnet ef migrations add MyFirstMigration dotnet ef database update
下面就来正式Web API 的开发。
这里我们添加一个Web API 控制器 UsersController 。
会默认为我们生成GET POST PUT DELETE 对应的方法。这里我们就来具体实现。
UsersController.cs
[Route("api/[controller]")] public class UsersController : Controller { private DataContext Context; public UsersController(DataContext _context) { Context = _context; } // GET: api/users [HttpGet] public IActionResult Get() { return Ok(Context.Users.ToList()); } // GET api/users/5 [HttpGet("{id}")] public IActionResult Get(int id) { var _user = Context.Users.FirstOrDefault(r => r.Id == id); if (_user == null) return NotFound(); return Ok(_user); } // POST api/users [HttpPost] public IActionResult Post([FromBody]User user) { Context.Add(user); Context.SaveChanges(); return Created($"api/users/{user.Id}",user); } // PUT api/users/5 [HttpPut("{id}")] public IActionResult Put(int id, [FromBody]User user) { var _user = Context.Users.FirstOrDefault(r => r.Id == id); if (_user == null) return NotFound(); _user.UserName = user.UserName; _user.Password = user.Password; Context.Update(_user); Context.SaveChanges(); return Created($"api/users/{_user.Id}", _user); } // DELETE api/users/5 [HttpDelete("{id}")] public IActionResult Delete(int id) { var _user = Context.Users.FirstOrDefault(r => r.Id == id); if (_user == null) return NotFound(); Context.Remove(_user); Context.SaveChanges(); return NoContent(); } }
实现好以后,我们使用Chrome 应用 ARC 来调试。
增加-》Post:
{"Id":1,"UserName":"LineZero","PassWord":"123456"}
http://localhost:5000/api/users
多个查询-》Get:
http://localhost:5000/api/users
单个查询-》Get(int id):
http://localhost:5000/api/users/1
修改-》Put:
{"UserName":"LineZeroASPNETCore","PassWord":"123456789"}
http://localhost:5000/api/users/1
删除-》Delete:
http://localhost:5000/api/users/1
对应的Http 操作也都实现了。数据库相关操作也在代码里。
对于ASP.NET Core Web API REST 风格的一种代码实现。
ASP.NET Core Web API 默认JSON序列化的话,会将属性名自动转化为小写,这里我们只需要一句配置即可解决。
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc().AddJsonOptions(r=>r.SerializerSettings.ContractResolver= new Newtonsoft.Json.Serialization.DefaultContractResolver()); }
本文示例代码:https://github.com/linezero/Blog/tree/master/ASPNETCoreAPI
参考链接:
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
相关文章推荐
- ASP.NET Core Web API 开发-RESTful API实现
- 在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用
- 【ASP.NET Core快速入门】(十四)MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现
- ASP.NET Web API实现微信公众平台开发(二)access_token与定时任务
- ASP.NET Web API实现微信公众平台开发(一)服务器验证
- 菜鸟入门【ASP.NET Core】14:MVC开发:UI、 EF + Identity实现、注册实现、登陆实现
- 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
- 【ASP.NET Core快速入门】(十五)MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证
- 使用ASP.NET Web API自带的类库实现对CORS的支持(在开发中使用这种方式)(转载)
- 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传
- 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
- 菜鸟入门【ASP.NET Core】15:MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证
- 基于.Net Framework 4.0 Web API开发(3):ASP.NET Web APIs 异常的统一处理Attribute 和统一写Log 的Attribute的实现
- ASP.NET Web API实现微信公众平台开发(三)自定义菜单
- ASP.NET Core 1.0开发Web API程序
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]