当前位置: 首页 > 工具软件 > restful-dj > 使用案例 >

通过Django简单实现RESTful API

薛钧
2023-12-01

RESTful是一种前后端分离、通过调用API接口来实现具体的功能。
在RESTFUl中,每个URL视为一个资源,客户端通过http动词,对服务器资源进行操作。

关于RESTful的概念和原理更详细的介绍,可以参考下面阮大师的这篇文章,讲的非常透彻。链接地址:
http://www.ruanyifeng.com/blog/2011/09/restful.html

我在Django环境中,是通过Django REST framework来实现RESTful API的

这里假设读者已经安装好了python3及Django2.0的运行环境,并且已经配置好Django2.0,能运行Django2.0,Django2.0的环境部署的安装不在本文的讨论范围,请自行百度或google。

Django REST framework的安装环境很简单,可以通过pip直接装。我安装的是djangorestframework 3.8.2 ,命令如下:

pip3 install djangorestframework

然后需要在Django中新建一个app,名称叫apps

python manage.py startapp apps     

好了。下面就是具体的配置过程。
简单来说,一个简单的RESTful 功能的实现,需要更改5个文件:
1、settings.py, 加上rest_framework和apps:

INSTALLED_APPS = [
   ...
   'rest_framework',
   'apps',
   ...
]

2、views.py,定义一个类:

class ServerList(APIView):
    def get(self, request):
        gg = serverinfo.objects.all()
        serializer = Serverserializer(gg, many=True)
        return Response(serializer.data)

3、urls.py, 加一行url:

path('serverlist/', views.ServerList.as_view()),

4、models.py,新建类:

class serverinfo(models.Model):
    id = models.AutoField(primary_key=True, null=False, verbose_name='ID')
    server_name = models.CharField(max_length=50, null=False, verbose_name='服务器名称')
    type = models.CharField(max_length=50, null=False, verbose_name='类型')
    server_ip = models.CharField(max_length=16, null=False, verbose_name='IP')

建了models之后,不要忘了运行makemigration和migrate,这两个命令可以帮助你在数据库建表。

5、新建一个文件serializers.py
这个文件有点儿类似django中的forms.py, 不过功能更强大,代码示例如下:

from rest_framework import serializers

class Serverserializer(serializers.Serializer):
    id = serializers.IntegerField(read_only=True)
    server_name = serializers.CharField(required=True, max_length=50)
    type = serializers.CharField(required=True, max_length=50)
    server_ip = serializers.CharField(required=True, max_length=16)

最后安装httpie模块便于对api进行调试

pip3 install httpie

然后就可以运行了。这就是一个最简单的restful实现。访问Django的url试试

是不是简单粗暴,当然,生产环境中的实际运行代码会比这个复杂的多,生产环境需要建立很多表,表之间需要建立很多外键关联等。

这里只是简单实现一个基本功能,希望能给各位以参考。

Restful参考链接:
http://www.cnblogs.com/zivwong/p/7417989.html

 类似资料: