什么是rest?什么是restful?它们之间是什么关系

REST服务与Restful风格

一、REST来源

REST:是一组架构约束条件和原则,REST是Roy Thomas Fielding在他2000年的博士论文中提出的。
这里写图片描述
图 1 Roy Thomas Fielding是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器作者之一、Apache基金会第一任主席

二、什么是REST

REST(Representational State Transfer):表现层状态转移,一种软件架构风格,不是标准。既然不是标准,我可以遵守,也可以不遵守!!!
什么是表现层状态转移:

 Representational (表现层)
 State Transfer(状态转移):通过HTTP动词实现。

总结:URL定位资源,HTTP动词(GET,POST,PUT,DELETE)描述操作。

三、什么是RESTful

 基于REST构建的API就是Restful风格。

四、为什么使用RESTful

1.JSP技术可以让我们在页面中嵌入Java代码,但是这样的技术实际上限制了我们的开发效率,因为需要我们Java工程师将html转换为jsp页面,并写一些脚本代码,或者前端代码。这样会严重限制我们的开发效率,也不能让我们的java工程师专注于业务功能的开发,所以目前越来越多的互联网公司开始实行前后端分离。
2.近年随着移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为Web,iOS和Android提供服务。另外对于广大平台来说,比如微博开放平台,微信开放平台等,它们不需要有显式的前端,只需要一套提供服务的接口,RESTful无疑是最好的选择。RESTful架构如下:
这里写图片描述

五、如何设计Restful风格的API

1.路径设计

 —>在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表名对应,一般来说,数据库中的表都是同种记录的”集合”(collection),所以API中的名词也应该使用复数。
 —>举例来说,有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样。

   https://api.example.com/v1/zoos
   https://api.example.com/v1/animals
   https://api.example.com/v1/employees

2.HTTP动词设计

对于资源的具体操作类型,由HTTP动词表示,常用的HTTP动词如下:

请求方式含义
GET获取资源(一项或多项)
POST新建资源
PUT更新资源(客户端提供改变后的完整资源)
DELETE删除资源

如何通过路径和http动词获悉要调用的功能:

请求方式含义
GET /zoos列出所有动物园
POST /zoos新建一个动物园
GET /zoos/ID获取某个指定动物园的信息
PUT /zoos/ID更新某个指定动物园的信息(提供该动物园的全部信息)
DELETE /zoos/ID删除某个动物园
GET /zoos/ID/animals列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID删除某个指定动物园的指定动物
  • 24
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
`rest_framework.routers.DefaultRouter`是 Django REST framework 中提供的一个路由器类,用于自动注册视图集(Viewset)并为它们生成 URL。 在 Django 中,我们可以使用 `urls.py` 文件来定义 URL 和视图之间的映射关系。但是,随着 RESTful API 的流行,单独编写每个 URL 映射的代码变得非常繁琐。为此,Django REST framework 提供了 `DefaultRouter`,它可以自动将视图集注册到路由器中,并为每个视图集生成标准的 URL 模式。 使用 `DefaultRouter`,我们可以将视图集注册到路由器中,并将其分配给特定的 URL 前缀。例如,如果我们有一个视图集 `MyModelViewSet`,我们可以将其注册到路由器中,然后将其分配给 `/api/mymodel/` URL 前缀: ```python from rest_framework import routers from myapp.views import MyModelViewSet router = routers.DefaultRouter() router.register(r'mymodel', MyModelViewSet) urlpatterns = [ # ... path('api/', include(router.urls)), # ... ] ``` 这样,我们就可以通过以下 URL 访问 `MyModelViewSet` 中定义的不同操作: - `GET /api/mymodel/`:获取 `MyModel` 对象列表 - `POST /api/mymodel/`:创建一个新的 `MyModel` 对象 - `GET /api/mymodel/{pk}/`:获取具有给定 ID 的 `MyModel` 对象的详细信息 - `PUT /api/mymodel/{pk}/`:更新具有给定 ID 的 `MyModel` 对象 - `DELETE /api/mymodel/{pk}/`:删除具有给定 ID 的 `MyModel` 对象 总之,`DefaultRouter` 简化了 Django REST framework 中 URL 和视图之间的映射关系的配置,使得代码更加简洁和易于维护。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值