通過Django簡單實現RESTful API
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