RESTful  Web APIs设计风格

RESTful  Web APIs设计风格

RESTful(Representational State Transfer,简称REST)是一种网络Web程序的设计风格和开发方式。

一、RESTful简介

在开发Web应用时,可以采用前后端不分离模式或前后端分离模式。

1. 前后端不分离模式

前后端不分离模式的代码耦合度比较高,前端页面看到的效果都是由后端控制的,这种Web应用一般是纯网页应用,基本不存在前后端之间的接口交互。

2. 前后端分离模式

前后端分离模式中,后端仅返回前端所需的数据,不渲染HTML页面,不控制前端的效果。前端和后端之间通过接口来传递数据,后端返回的数据通常采用json格式的数据,前端不管是网页(PC端)还是APP(移动端),都可以解析后端返回的数据,然后自己渲染页面效果。

后端开发的视图函数或视图类都被称为接口,或者API(Application Programming Interface,应用程序编程接口)。接口用来处理数据库中的数据,然后将处理后的数据返回给前端,一个接口通常只做一件事(查询、增加、修改、删除)。这样,前端通过访问对应的接口来对数据进行增删改查。

大部分Web应用采用的都是前后端分离模式,RESTful 接口设计方式是前后端分离的Web最常用的接口设计方式。

RESTful 接口设计方式定义了很多容易理解和方便实现的设计风格,通过接口文档,前端程序员和后端程序员可以顺畅沟通。通过接口文档,可以快速了解一个陌生项目的业务。

RESTful 接口设计方式不是一种必须遵守的语法或规则,只是采用这种方式,会享受到 RESTful 带来的种种便利,下面就开始详细了解 RESTful 。 

二、RESTful 中HTTP请求方式的定义风格

所有的 Web 服务都使用 HTTP 来发送网络请求,只是使用的方式不同。

不同的 HTTP 请求方式对应对数据的不同操作,请求方式由 HTTP 动词来表示,如 GET,POST,PUT,DELETE。

在 RESTful 规范中,常用的 HTTP 动词有:

GET:     查询数据(一项或多项),对应数据库SELECT

POST:    新建数据,对应数据库CREATE

PUT:     修改数据(提供对象改变后的完整数据),对应数据库UPDATE

PATCH:   修改数据(只提供对象被修改的属性),对应数据库UPDATE

DELETE:  删除数据,对应数据库DELETE

HEAD:    获取对象的元数据

OPTIONS: 获取信息,资源的哪些属性是可以改变的

在对同一个数据库进行操作时,使用不同的请求方式对应的操作是不相同的,通过不同的 HTTP 请求方式,来区分对数据库的增删改查操作。

需要注意的是, PUT 和 PATCH 两种请求方式都是对数据进行修改操作, PUT 需要提供修改后的完整数据,PATCH 只需要提供修改了的属性数据就可以了。如,有一个 Computer 的数据库,Computer 有两个属性颜色 color 和发布日期 date ,修改某一条数据的 color 属性,使用 PUT 请求方式修改时,不仅需要发送修改后的 color ,还需要把 date 一起带上,而 PATCH 只发送 color 就可以了。

三、RESTful 中URI路径的定义风格

所有的 Web 服务都使用 URI ,只是使用的方式不同。

URI 是 Web 前端与后端进行数据交互的路径,是用户与 Web 服务器交互时传递信息的接口。

路径可以理解成网址,每个路径对应一个网址,每个网址对应一种资源,资源就是后台数据库中的数据对象。

在 RESTful 规范中,将资源名作为路径。资源对象是一个名词,所以路径中只能是名词(资源对象名),不能是动词,而且所用的名词往往与数据库的表名对应。

如数据库中有一个 Phone 的数据库,则对应的路径如下:

GET /phones      获取phones列表的信息

POST /phones     新增一个phone对象

GET /phones/7    获取phone7的信息

PUT /phones/7    修改phone7的信息

DELETE /phones/7 删除phone7的信息

对于同一个数据库的操作,一般都是使用这个数据库的名词来作为路径。而且,不管操作单条数据或多条数据,名词都是使用复数形式,如果是单条数据,则会跟一个 id 。 

《RESTful Web APIs》中的示例:

四、RESTful 中返回状态码的定义风格

定义了 HTTP 请求方式和 URI 路径,向后端发送请求,后端会返回数据,这时候就会有返回状态码。

对于 HTTP 请求,返回的状态码,常见的如下:

1xx:返回相关信息,服务器成功接收部分请求,要求继续提交其余请求才能完成整个处理过程。

2xx:操作成功,服务器成功接收请求并已完成整个处理过程,常用200(OK 请求成功)。

3xx:重定向,为完成请求,需进一步请求,常用302(所请求的页面已经临时转移至新的url)。

4xx:客户端的请求有错误,常用404(服务器无法找到被请求的页面)。

5xx:服务器端出现错误,常用500(请求未完成,服务器遇到不可预知的情况)。

在 RESTful 规范中,对应上面的请求方式,常见的返回状态码如下:

200 [GET]:服务器成功返回用户请求的数据

201 [POST/PUT/PATCH]:用户新建或修改数据成功

204 [DELETE]:用户删除数据成功

400 [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作

401 [*]:表示用户没有权限(令牌、用户名、密码错误)

403 [*] 表示用户得到授权,但是访问是被禁止的

404 [*]:服务器无法找到被请求的页面

500 [*]:服务器发生错误,用户将无法判断发出的请求是否成功

在返回状态码中,不同请求方式成功后,返回的状态码不一样。

五、RESTful 的其他相关内容

RESTful Web APIs 设计风格的主要规范就是上面几点,此外,还有很多相关的规范,如:

1. 返回数据尽量使用 JSON 格式。

2. 当一个 URI 同时对多个数据库进行操作时,可以拼接在一起。

如同时操作 Computer 和 Phone 数据库,可以 /computers/{computer_id}/phones/{phone_id} 。

3. 通过查询字符串来体现过滤信息。

RESTful 是一种设计风格,在使用时可以只遵守适合自己项目的规范,灵活应用。

RESTful 是与编程语言分离的,使用任何一门语言来编写 Web API,都可以采用 RESTful 风格,如 JAVA,Python,PHP 等。

如果想了解更过关于 RESTful Web APIs 的内容,您可以登陆 RESTful Web APIs 的网站: http://www.restfulwebapis.org/  ,点击  RESTful Web APIs >> Download RESTful Web Services (PDF) 下载PDF版的书《RESTful Web APIs》来阅读。(下载的是英文版,主要关注 RESTful 包含哪些部分,对主要内容看一下,具体理解结合开发过程来理解)。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Net6是微软推出的一款开发框架,有着更加先进的特性和性能提升。它融合了之前的.Net Core和.Net Framework,并且在性能、安全性、跨平台支持等方面有了大幅度的改进。 WebAPI是.Net框架中用于构建RESTful风格Web服务的一种技术。通过WebAPI,我们可以很方便地创建可供客户端调用的Web服务,满足不同平台之间的数据传输需求。 Net6 WebAPI Demo是一个示例项目,用来展示如何使用Net6开发WebAPI服务。在这个Demo中,我们可以看到如何创建WebAPI控制器、定义路由规则、处理HTTP请求和响应等等。通过这个示例项目,我们可以学习到如何使用Net6框架提供的新特性和功能,以及如何利用这些功能来构建高性能、安全可靠的WebAPI应用程序。 在Net6 WebAPI Demo中,我们还可以看到如何使用ASP.NET Core的依赖注入容器、中间件、过滤器等标准的开发方式,以及如何使用.Net6提供的新特性,比如模式匹配、异步流、记录类型等等。 总之,Net6 WebAPI Demo是一个非常好的学习资源,可以帮助我们快速上手和了解如何使用Net6框架来开发高性能、安全可靠的WebAPI应用程序。通过学习这个示例项目,我们可以更加深入地了解.Net6框架的新特性和优势,为我们的开发工作提供更多的可能性。 ### 回答2: Net6 中的 Web API Demo 是一个简单的示例项目,展示了如何使用新版 .NET 6 中引入的一些特性来构建 Web API。 在这个示例中,我们使用了 Net6 中的 WebApplication 类来创建一个基于 ASP.NET Core 的 Web API 应用程序。这个类提供了一个方便的方式来配置路由、中间件和依赖注入等功能。 在 Demo 中,我们可以看到一些基本的控制器和动作方法。控制器是处理 HTTP 请求的类,动作方法则对应不同的 HTTP 方法(如 GET、POST、PUT 等)。我们可以使用特性路由来定义控制器和动作方法的路由规则。 示例中还演示了如何使用依赖注入来注入服务。我们可以在 Startup 类的 ConfigureServices 方法中注册服务,并在控制器的构造函数中进行注入。这样可以让我们在控制器中方便地使用其他组件、库或服务。 单元测试也是一个重要的方面。在 Demo 中,我们可以看到一些简单的单元测试用例,用于测试控制器的行为和返回结果。使用 Net6,我们可以使用更简洁的语法和新的单元测试功能进行测试。 除此之外,Net6 还带来了一些新的特性和改进,比如更快的性能、更简洁的语法、更轻量级的应用程序等。这些都可以帮助开发者更高效地构建和部署 Web API 应用程序。 总的来说,Net6 Web API Demo 是一个简单但功能完整的示例项目,展示了在 .NET 6 中如何使用 WebApplication 类和其他新特性来构建高性能、可测试和可扩展的 Web API 应用程序。 ### 回答3: Net6 WebApi demo 是一个使用 .NET 6 构建的 WebApi 示例项目。.NET 6 是微软最新发布的一个跨平台开发框架,用于构建 Windows、Linux、macOS 上的应用程序。在这个示例项目中,我们可以学习到如何使用.Net6 构建一个基于 HTTP 协议的 RESTful Web 服务。 首先,在这个示例项目中,我们可以看到如何使用 .NET 6 的新特性来简化 WebApi 的搭建过程。.NET 6 提供了一套全新的 WebApi 框架,使用起来非常简洁,能够更高效地处理请求和响应。我们可以通过简单的配置和几行代码,就能创建一个完整的 WebApi 服务。 其次,这个示例项目还展示了如何通过路由配置来定义 API 的端点和请求路径。通过使用 .NET 6 的路由特性,我们可以灵活地定义不同的路由规则,来匹配不同的请求,使得我们的 WebApi 更加灵活易用。 此外,这个示例项目还演示了如何使用 .NET 6 的依赖注入机制来管理服务的生命周期。通过依赖注入,我们可以将各个组件解耦合,使得代码更加清晰、可维护。在这个示例项目中,我们可以看到如何通过依赖注入来注入服务,并在控制器中使用这些服务。 最后,这个示例项目还包括了一些常见的 HTTP 请求和响应的示例代码。我们可以学习到如何处理 GET、POST、PUT、DELETE 等不同类型的请求,并返回相应的响应。通过这些示例代码,我们可以更好地理解 WebApi 的工作原理,并能够根据实际需求进行扩展和定制。 总的来说,Net6 WebApi demo 是一个非常有价值的示例项目,通过它我们可以学到如何使用.Net6 构建一个高效、可扩展的 WebApi 服务。无论是对于初学者还是有经验的开发者来说,这个示例项目都是一个非常好的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小斌哥ge

非常感谢,祝你一切顺利。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值