DRF框架知識點總結

web開發的兩種模式:前後端不分離和前後端分離

RestFul API接口設計風格:前後端分離被廣泛採用

使用Django基礎自定義Rest API接口

DRF框架: 提高開發Rest API接口的效率

web開發的兩種模式

前後端不分離:前端看到的效果是由後端進行控制的

缺點:只適用於純網頁的應用。

優點:有利於網站的SEO優化。

在這裏插入圖片描述

前後端分離:後端只返回前端所需的數據,至於數據怎麼進行展示,由前端自己控制。

優點:可以對接不同類型的客戶端。

缺點:不利於SEO優化
在這裏插入圖片描述

RestFul API接口設計風格介紹

統一接口設計風格:
	1.URL地址儘量使用名詞,不要出現動詞
	2.使用不同的請求方式,代表要執行不同的操作
	(GET)獲取 POST(新增) PUT(修改)DELETE(刪除)
	不常用:PATCH(修改) HEAD(只返回請求頭沒有請求體) OPTIONS(獲取信息)
	3.訪問URL地址時,如果有一些過濾的參數,參數可以放到查詢字符串中
	4.響應數據:
		GET /books/:返回所有的圖書數據
		GET /books/1/:返回id爲1的圖書數據
		POST /books/:將新增的圖書數據返回
		PUT /books/1/:將修改的圖書數據返回
		DELETE /books/1:返回空文檔
		獲取|修改:200
		新增:201
		刪除:204
		參數有誤:400
		服務器出錯:500
	5.響應數據的格式:json
	
瞭解:1.域名:使用專有域名
	 2.版本:將版本信息放在url地址
	 3.錯誤:將錯誤信息返回
	 4.在訪問api接口時,將和接口相關的其他API接口的地址也在響應數據中返回

Django自定義RestAPI

需求:
    設計一套符合RestAPI風格的接口,提供以下5個接口:
        1. 獲取所有圖書數據:GET /books/
        2. 新增一本圖書數據:POST /books/
        3. 獲取指定的圖書數據(根據id):GET /books/(?P<pk>\d+)/
        4. 修改指定的圖書數據(根據id):PUT /books/(?P<pk>\d+)/
        5. 刪除指定的圖書數據(根據id):DELETE /books/(?P<pk>\d+)/
# 2個類視圖
class BookListView(View):
    # GET /books/
    def get(self, request):
        """
        獲取所有圖書數據:
        1. 查詢所有圖書的數據
        2. 將圖書的數據進行返回
            數據格式:json 狀態碼:200
        """
        # 1. 查詢所有圖書的數據
        books = BookInfo.objects.all() # QuerySet

        # 組織數據
        books_li = []
        for book in books:
            book_dict = {
                'id': book.id,
                'btitle': book.btitle,
                'bpub_date': book.bpub_date,
                'bread': book.bread,
                'bcomment': book.bcomment,
                'image': book.image.url if book.image else ''
            }

            books_li.append(book_dict)

        # 2. 將圖書的數據進行返回
        # 注意點:將list轉換爲json數據時,需要將safe設置False
        return JsonResponse(books_li, safe=False)

    # POST /books/
    # 參數:客戶端傳遞 btitle,bpub_date,通過json傳遞
    def post(self, request):
        """
        新增一本圖書數據:
        1. 獲取參數並進行校驗:request.body->decode->json.loads
        2. 創建圖書並添加到數據庫
        3. 將新增的圖書數據進行返回
            數據格式:json 狀態碼:200
        """
        pass


class BookDetailView(View):
    # GET /books/(?P<pk>\d+)/
    def get(self, request, pk):
        """獲取指定的圖書數據(根據id)"""
        pass

    # PUT /books/(?P<pk>\d+)/
    def put(self, request, pk):
        """修改指定的圖書數據(根據id)"""
        pass

    # DELETE /books/(?P<pk>\d+)/
    def delete(self, request, pk):
        """刪除指定的圖書數據(根據id)"""
        pass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章