一、了解什么是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
        }
    }
}

ASP.NET Core RESTful学习理解的更多相关文章

  1. ASP.NET Core 2 学习笔记(十三)Swagger

    Swagger也算是行之有年的API文件生成器,只要在API上使用C#的<summary />文件注解标签,就可以产生精美的线上文件,并且对RESTful API有良好的支持.不仅支持生成 ...

  2. ASP.NET Core 2 学习笔记(十二)REST-Like API

    Restful几乎已算是API设计的标准,通过HTTP Method区分新增(Create).查询(Read).修改(Update)和删除(Delete),简称CRUD四种数据存取方式,简约又直接的风 ...

  3. sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)

    sql server 关于表中只增标识问题   由于我们系统时间用的过长,数据量大,设计是采用自增ID 我们插入数据的时候把ID也写进去,我们可以采用 关闭和开启自增标识 没有关闭的时候 ,提示一下错 ...

  4. Asp.Net Core WebApi学习笔记(四)-- Middleware

    Asp.Net Core WebApi学习笔记(四)-- Middleware 本文记录了Asp.Net管道模型和Asp.Net Core的Middleware模型的对比,并在上一篇的基础上增加Mid ...

  5. 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful)

    近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只考虑dotnet到dotnet的情形下,我们可以选择remoting.WCF(http).WCF(tcp).WCF(RESTful). ...

  6. ASP.NET Core 2 学习笔记(七)路由

    ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为:当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理.从ASP.NET就已经存在的架 ...

  7. ASP.NET Core 2 学习笔记(十)视图

    ASP.NET Core MVC中的Views是负责网页显示,将数据一并渲染至UI包含HTML.CSS等.并能痛过Razor语法在*.cshtml中写渲染画面的程序逻辑.本篇将介绍ASP.NET Co ...

  8. 大比速:remoting、WCF(http)、WCF(tcp)、WCF(RESTful)、asp.net core(RESTful) .net core 控制台程序使用依赖注入(Autofac)

    大比速:remoting.WCF(http).WCF(tcp).WCF(RESTful).asp.net core(RESTful) 近来在考虑一个服务选型,dotnet提供了众多的远程服务形式.在只 ...

  9. ASP.NET Core 2 学习笔记(一)开始

    原文:ASP.NET Core 2 学习笔记(一)开始 来势汹汹的.NET Core似乎要取代.NET Framework,ASP.NET也随之发布.NET Core版本.虽然名称沿用ASP.NET, ...

  10. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(十)-- 发布(Windows)

    本篇将在这个系列演示的例子上继续记录Asp.Net Core在Windows上发布的过程. Asp.Net Core在Windows上可以采用两种运行方式.一种是自托管运行,另一种是发布到IIS托管运 ...

随机推荐

  1. CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别

    CSS 属性选择器 ~=, |=, ^=, $=, *= 的区别 总结: "value 是完整单词" 类型的比较符号: ~=, |= "拼接字符串" 类型的比较 ...

  2. 三、Kubernetes调度

    一.Kubernetes调度 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上.听起来非常简单,但有很多要考虑的问题: 公平:如何保证每个节点都 ...

  3. 以开发之名 | bilibili会员购让IP在眼前动起来

    随着ACG文化(二次元文化)影响力的不断提升,哔哩哔哩平台上衍生品消费群体不断扩大,手办行业迅速崛起.2017年,B站推出ACG衍生品消费品牌bilibili会员购,涵盖二次元手办销售等多项业务,拓展 ...

  4. Jupyter基本使用

    https://www.cnblogs.com/zhrb/p/12174167.html 用来取代Jupyter Notebook的一个基于Web的用户交互式用户界面.相当于增强版的Jupyter N ...

  5. excel公式与快捷操作

    将首行的公式,运用到这一整列 1.选中要输入公式的第一个单元格,SHIFT+CTRL+方向键下,在编辑栏中输入公式,按下CTRL+回车: 2.先输入要填充的公式,按下SHIFT+CTRL+方向键下,再 ...

  6. SpringBoot 02: 初识SpringBoot

    1. SpringBoot 产生原因 spring, springmvc框架使用上的一些缺点: 需要使用的大量的配置文件 还需要配置各种对象 需要把使用的对象放入到spring容器中才能使用对象 需要 ...

  7. 云原生之旅 - 14)遵循 GitOps 实践的好工具 ArgoCD

    前言 Argo CD 是一款基于 kubernetes 的声明式的Gitops 持续部署工具. 应用程序定义.配置和环境都是声明式的,并受版本控制 应用程序部署和生命周期管理都是自动化的.可审计的,并 ...

  8. bugku 备份是个好习惯

    打开是一段神秘代码,我也不知道是什么 直接解密试试 尝试各种,发现是md5,解开是.... 可能需要我们传什么东西进去,抓包看看,无果.... 看看题目是备份,可能这道题就和备份文件有关 我就直接点了 ...

  9. 关于sublime-build的配置详解

    前言 sublime-build 可以做很多自定义的构建命令,然后用其执行代码,十分方便! 开始 这里我就简单的用python 的配置来详细说明各个配置项目的作用 { "shell_cmd& ...

  10. 通过启动脚本控制PHP-FPM开关

    vi /etc/init.d/php-fpm 复制粘贴以下内容: #! /bin/sh# Comments to support chkconfig on CentOS# chkconfig: 234 ...