美文网首页
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