Django 之 restful api(未完待续)

本文介绍了RESTful API的概念,强调其遵循REST架构设计原则,以资源为中心,通过统一接口进行操作。在Django中,可以利用Django Rest Framework轻松创建符合RESTful规范的API。内容包括建立Models、使用Serializers解析数据、通过ViewSet处理视图和权限,以及通过Routers和Urls注册并映射API。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Restful api

符合REST架构设计的API叫做restful api。
那么什么是REST呢?REST是所有Web应用都应该遵守的架构设计指导原则。
Representational State Transfer,翻译是”表现层状态转化”。
面向资源是REST最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。(7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS)

其实说到底,restful api 就是一种统一规范的api设计风格
在django中可以使用djangorestframework 来快速开发规范的restful api,当然也可以自己按照restful的规范来自行开发。

范例

GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

Django Rest framework

图片
- 建立 Models
- 依靠 Serialiers 将数据库取出的数据 Parse 为 API 的数据(可用于返回给客户端,也可用于浏览器显示)
- ViewSet 是一个 views 的集合,根据客户端的请求(GET、POST等),返回 Serialiers 处理的数据权限 Premissions 也在这一步做处理
- ViewSet 可在 Routers 进行注册,注册后会显示在 Api Root 页上
- 在 urls 里注册 ViewSet 生成的 view,指定监听的 url

# 以rmdb 的idc为例,来写一个简单的restful api
# 这是models.py 
class Idc(models.Model):
    ch_name = models.CharField("机房中文名称", max_length=32, unique=True, null=True)
    en_name = models.CharField("机房英文名称", max_length=32, unique=True, null=True)
    address = models.CharField("机房地址", max_length=100, null=True, blank=True)
    ip_range = models.CharField("IP范围", max_length=64, null=True)
    bandwidth = models.CharField("接入带宽", max_length=32, null=True)
    add_person = models.CharField("添加人", max_length=50, null=True)
    add_time = models.CharField("添加时间", max_length=50, null=True)
    description = models.TextField("备注", max_length=100, null=True, blank=True)

    def __str__(self):
        return self.en_name

    class Meta:
        verbose_name = '机房'
        verbose_name_plural = '机房'
########################################################
# 然后写序列化文件
# serializers.py
from rmdb.models import *
from rest_framework import serializers


class IdcSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Idc
        fields = '__all__'
        # fields = ('id','ch_name','en_name','address','bandwidth','description')

#########################################################
# 再写view文件
# view.py
from rmdb.models import *
from rest_framework import viewsets
from rest_framework import permissions
from restapi.serializers import IdcSerializer

class IdcViewSet(viewsets.ModelViewSet):
    queryset = Idc.objects.all().order_by('-add_time')
    serializer_class = IdcSerializer
    permission_classes = (permissions.IsAuthenticated,)

#########################################################
# 最后写url文件
# urls.py
from django.conf.urls import include, url
from rest_framework import routers
from restapi.views import IdcViewSet

router = routers.DefaultRouter()
router.register(r'idc', IdcViewSet)

urlpatterns = [
    url(r'^', include(router.urls)),
]

## 然后就可以用浏览器或者命令行访问测试了,一个简单的restful api就完成了。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值