4

ASP.NET Core RESTful学习理解 - Seven`

 1 year ago
source link: https://www.cnblogs.com/moxuanshang/p/17076377.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、了解什么是REST

  1. REST是“REpresentational State Transfer”的缩写 ,表述性状态传递;
  2. REST是一种软件架构风格,用于构造简单、可靠、高性能的WEB应用程序;
  3. REST中,资源(Resource)是最基本的概念,任何能够命名的对象都是一个资源,每个资源都有一个统一的资源标识符URI(Uniform Resource Identifier),通过URI能够标识且访问该资源。因此,REST是一种基于资源的架构风格;
  4. REST中,对资源的操作通过HTTP方法来完成,如:GET、POST、PUT、DELETE、PATCH等;
  5. REST提出了一系列约束,遵循这些约束的应用程序称为RESTful API应用

二、什么是Restful

Restful是符合rest架构风格的网络API接口,完全承认Http是用于标识资源。Restful URL是面向资源的,可以唯一标识和定位资源。 对于该URL标识的资源做何种操作是由Http方法决定的。

三、使用Restful特点有哪些

  1. 所有的资源都尽量通过URL来表示,避免通过QueryString、报文体来对资源进行定位,这样URL的语义性更清晰。
  2. 对所有类型资源的新增、删除、修改、查询操作都统一为向资源发送POST、DELETE、PUT、GET请求,接口统一且具有自描述性,减少了开发人员对接口文档的依赖性。
  3. 对于GET、PUT、DELETE 等幂等的操作,网关、网络请求组件等可以对失败的请求自动重试。
  4. 网关等可以对GET请求进行缓存,能够提升系统的访问速度,而且降低服务器的压力。
  5. 通过HTTP状态码反映服务器端的处理结果,能够统一错误码,避免自定义错误码带来的不统一的问题。客户端也可以根据错误码进行统一处理,比如对于403状态码,客户端统一提示用户去登录。
  6. 网关等系统可以根据状态码来分析系统的访问数据,比如可以根据HTTP状态码分析有多少成功的请求,有多少失败的请求。

四、Restful参数如何传递

客户端在给服务器端传递参数的时候,有URL、QueryString、请求报文体3种主要方式。

  1. 通过URL传递更符合 Restful规范,如果要传递的参数太多或者内容太长的话,通过URL传递的方式就不太适合。
  2. 通过QueryString传递比较灵活,但是同样不适合传递太长的内容。
  3. 通过请求报文体传递参数不限制内容的长度,而且通过JSON 可以传递复杂的格式。
  1. 对于保存、更新类的请求一般都是使用POST、PUT请求,把全部参数都放到请求报文体中。
  2. 对于GET请求,一般参数的内容都不会太长,因此统一通过QueryString传递参数就可以。
  3. 对于极少数参数内容超过URL限制的请求,由于GET、PUT请求都是幂等的,因此把请求改成通过PUT请求,然后通过报文体来传递参数。

五、代码演示

微软为Web API提供的模板代码大部分都严格遵守Restful风格的,如下

namespace WebApplication1.Controllers{    [Route("api/[controller]")]//Restful 风格    //[Route("api/[controller]/[action]")] //RPC风格    [ApiController]    public class RestfulApiController : ControllerBase    {        // GET: api/<RestfulApiController>        [HttpGet]        public IEnumerable<string> Get()        {            return new string[] { "value1", "value2" };        }         // GET api/<RestfulApiController>/5 根据id获取        [HttpGet("{id}")]        public string Get(int id)        {            return "value";        }         // POST api/<RestfulApiController>        [HttpPost]        public void Post([FromBody] string value)        {            //code        }         // PUT api/<RestfulApiController>/5        [HttpPut("{id}")]        public void Put(int id, [FromBody] string value)        {            //code        }         // DELETE api/<RestfulApiController>/5        [HttpDelete("{id}")]        public void Delete(int id)        {            //code        }    }}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK