美文网首页
Asp.NetCore 中的 Resetfull API 架构

Asp.NetCore 中的 Resetfull API 架构

作者: 百进制 | 来源:发表于2020-06-24 14:45 被阅读0次

Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。
词组的翻译:"表现层状态转化"
如果一个架构符合REST原则,就称它为RESTful架构。
REST规范定义了资源的通用访问格式,它不是一个强制要求,遵守该规范可以让人易于理解接口的能力。

REST规范定义

资源的访问(API接口)划分到多个部分组合表述

  1. URL 描述资源的位置以及层级结构(请勿使用动词如:GetProjects)
  2. METHOD 资源的访问方法(动作)
  3. Body or Params 访问资源的条件或数据
  4. Headers 其他说明或条件(如:版本号、权限、其他常量)

Asp.Net Core 中实现

  1. 例如,商品Product就是一种资源。获取所有Product的URLGET /api/products如下:
        // GET /api/products?kw=&skip=0&take=15
        [HttpGet]
        public IActionResult Get(string kw,int skip,int take)
        {
            return Ok();
        }
  1. 而获取某个指定的Product,例如,id为123的Product,其URLGET /api/products/123如下:
        // GET /api/products/123
        // 注意参数{id}必须与方法参数名称完全相同(区分大小写)
        [HttpGet("{id}")]
        public IActionResult Get(int id)
        {
            return Ok();
        }
  1. 新建一个Product使用POST请求,JSON数据包含在body中,URLPOST /api/products如下:
        // POST /api/products
        [HttpPost]
        public IActionResult Post(string product)
        {
            return Ok();
        }
  1. 更新一个Product使用PUT请求,例如,更新id为123的Product,其URLPUT /api/products/123如下:
        // PUT /api/products/123
        // 注意参数{id}必须与方法参数名称完全相同(区分大小写)
        [HttpPut("{id}")]
        public IActionResult Put(int id,string product)
        {
            return Ok();
        }
  1. 删除一个Product使用DELETE请求,例如,删除id为123的Product,其URLDELETE /api/products/123如下:
        // DELETE /api/products/123
        // 注意参数{id}必须与方法参数名称完全相同(区分大小写)
        [HttpDelete("{id}")]
        public IActionResult Delete(int id)
        {
            return Ok();
        }
  1. 资源还可以按层次组织。例如,获取某个Product的所有评论,其URLGET /api/products/123/reviews使用:
        // GET /api/products/123/reviews?kw=&skip=0&take=15
        // 注意参数{id}必须与方法参数名称完全相同(区分大小写)
        [HttpGet("{id}/reviews")]
        public IActionResult reviews(int id, string kw, int skip, int take)
        {
            return Ok();
        }

其他

Reset规范中 PUT、DELETE、OPTION等请求方法都由GET、POST派生而来,所有方法特性都遵循GET、POST。

  1. 由GET派生的有:OPTION、DELETE
  2. 有POST派生的有:PUT

GET与POST区别

  1. POST能提交更多的数据,因此对于需要大量数据提交时必须使用POST
  2. GET相对与POST更快(其实可用忽略的)因此我们在获取数据时尽量使用GET。

相关文章

网友评论

      本文标题:Asp.NetCore 中的 Resetfull API 架构

      本文链接:https://www.haomeiwen.com/subject/bzfrfktx.html