002.WEB API 服务器 RESTful规范

RESTful 是一个撰写风格设计规范,用这个风格写出来的API就叫做RESTful API

没有规范时写一个news用的API可能会像以下

|--------|------|---------------------|
| 功能 | 方法 | 网址 |
| 取得新闻列表 | GET | api/news/getAllList |
| 取得一则新闻 | GET | api/news/getItem/1 |
| 新增一则新闻 | POST | api/news/new |
| 更新一则新闻 | POST | api/news/update |
| 删除一则新闻 | POST | api/news/delete |

另一个人写可能会变成以下这样

|--------|------|--------------------|
| 功能 | 方法 | 网址 |
| 取得新闻列表 | GET | api/news/getList |
| 取得一则新闻 | GET | api/news/getOne/1 |
| 新增一则新闻 | POST | api/news/newOne |
| 更新一则新闻 | POST | api/news/updateOne |
| 删除一则新闻 | POST | api/news/delete/1 |

但采用RESTful API风格开发

|--------|--------|------------|
| 功能 | 方法 | 网址 |
| 取得新闻列表 | GET | api/news |
| 取得一则新闻 | GET | api/news/1 |
| 新增一则新闻 | POST | api/news |
| 更新一则新闻 | PUT | api/news/1 |
| 删除一则新闻 | DELETE | api/news/1 |

简单来讲就是让风格变得一致,且利用不同的Method让网址变得简洁

维护上就会变得清楚,别人也可以更快理解其他人的API接口作用

RESTful API其实并非什么神奇或有特殊功能的东西,它仅仅就是一个写作的风格

以下简单说明各方法(Method)使用情境

GET:取得资料。

POST:新增资料。

PUT:更新资料。

DELETE:删除资料。

以上只是定义,但实际还是会依情况进行适当的调整,出现例外并没有关系。

怕自己风格用的不精准?其实这部分很自由心证,不要太离谱就行,或者同公司有共识即可。


接着,再来介绍一款好用的读取API的软体Postman,这边下载https://www.postman.com/downloads/

承上一个影片提到,浏览器如果要使用GET之外的存取方式比较不适合,甚至下一些参数,所以我们需要另一个软体来做这件事

这边就可以使用Postman来测试我们写好的API

这边带着大家安装一次,首先先到官网下载,下载好就直接执行

接着大家可以打开我的范例档来试一下使用Postman的感觉,按下左上角的+开始读取范例档的API

以下GET取得esp32列表

由于https是需要进行安全验证的,为了方便开发,我们服务器后台统一运行在http模式下,路由也用http进行内网穿透

服务器增删改查请求

下面仅仅演示简单的用法,实际运用在后面章节再优化

1.将服务器控制器类改写如下

cs 复制代码
using Microsoft.AspNetCore.Mvc;

namespace Esp32_Server.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ESP32 : ControllerBase
    {
      
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "HelloWorld1", "HelloWorld2", "HelloWorld3" };
        }

       
        [HttpGet("{id}")]
        public string Get(int id)
        {
            string result = "HelloWorld1";
            if (id == 2)
            {
                result = "HelloWorld2";
            }
            else if (id == 3)
            {
                result = "HelloWorld3";
            }
            return result;
        }

       
        [HttpPost]
        public string Post([FromBody] string value)
        {
            return "Post【" + value + "】";
        }

       
        [HttpPut("{id}")]
        public string Put(int id, [FromBody] string value)
        {
            return "Put【" + value + "】ID:" + id;
        }

      
        [HttpDelete("{id}")]
        public string Delete(int id)
        {
            return "Delete ID:" + id;
        }
    }
}

2.运行测试

0.1常规get得到的数据

0.2get加id得到的数据

0.3POST请求用法

0.4 PUT 修改数据请求

0.5 DELETE(删除)一个ID为4的数据

相关推荐
潘正翔6 小时前
docker核心概念
linux·运维·服务器·docker·容器·centos·运维开发
renhongxia16 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
Dovis(誓平步青云)8 小时前
远程办公软件文件传输实测:6 款工具的速度、稳定性和办公体验对比
linux·运维·服务器·后端·生成对抗网络
专注_每天进步一点点8 小时前
SLB(绑定弹性公网ip)-gateway-业务pod,gateway上出现reset by peer,业务pod上没有reset by peer
服务器·tcp/ip·gateway
ACP广源盛139246256739 小时前
GSV6155@ACP# 搭配 AI 服务器、AI PC 完整适配方案
大数据·服务器·人工智能·分布式·单片机·嵌入式硬件
IT方大同11 小时前
linux简介
linux·运维·服务器
Dear~yxy12 小时前
时间同步服务器搭建
运维·服务器
wbs_scy13 小时前
仿 muduo 高并发服务器项目:实现 LoopThread 与 LoopThreadPool 多线程事件循环
运维·服务器
微道道13 小时前
Linux盒子局域网内使用 .local 域名访问,告别IP变化烦恼
linux·运维·服务器·hermes
遇见小修修13 小时前
⚠键盘失灵?5 步自查,不用花钱换新键盘
运维·服务器·数据库·计算机外设·电脑·负载均衡