REST介面開發的核心任務

2021-08-21 04:33:22 字數 1543 閱讀 2471

分析一下上節的案例,可以發現,在開發rest api介面時,檢視中做的最主要有三件事:

維基百科中對於序列化的定義:

序列化(serialization)在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式(例如存成檔案,存於緩衝,或經由網路中傳送),以留待後續在相同或另一台計算機環境中,能恢復原先狀態的過程。依照序列化格式重新獲取位元組的結果時,可以利用它來產生與原始物件相同語義的副本。對於許多物件,像是使用大量參照的複雜物件,這種序列化重建的過程並不容易。物件導向中的物件序列化,並不概括之前原始物件所關聯的函式。這種過程也稱為物件編組(marshalling)。從一系列位元組提取資料結構的反向操作,是反序列化(也稱為解編組, deserialization, unmarshalling)。

序列化在電腦科學中通常有以下定義:

​ 在資料儲存與傳送的部分是指將乙個物件)儲存至乙個儲存媒介,例如檔案或是記億體緩衝等,或者透過網路傳送資料時進行編碼的過程,可以是位元組或是xml等格式。而位元組的或xml編碼格式可以還原完全相等的物件)。這程式被應用在不同應用程式之間傳送物件),以及伺服器將物件)儲存到檔案或資料庫。相反的過程又稱為反序列化

。簡而言之,我們可以將序列化理解為:

將程式中的乙個資料結構型別轉換為其他格式(字典、json、xml等),例如將django中的模型類物件裝換為json字串,這個轉換過程我們稱為序列化。

如:

queryset = bookinfo.objects.all()

book_list =

# 序列化

for book in queryset:

'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

'' })

return jsonresponse(book_list, safe=false)

反之,將其他格式(字典、json、xml等)轉換為程式中的資料,例如將json字串轉換為django中的模型類物件,這個過程我們稱為反序列化。

如:

json_bytes = request.body

json_str = json_bytes.decode()

# 反序列化

book_dict = json.loads(json_str)

book = bookinfo.objects.create(

btitle=book_dict.get('btitle'),

bpub_date=datetime.strptime(book_dict.get('bpub_date'), '%y-%m-%d').date()

)

我們可以看到,在開發rest api時,檢視中要頻繁的進行序列化與反序列化的編寫。

在開發rest api介面時,我們在檢視中需要做的最核心的事是:

REST介面開發的核心任務 Django

介面開發時檢視的主要操作 1,將請求的資料 如json格式 轉換為模型類物件 2,運算元據庫 3,將模型類物件轉換為響應的資料 如json格式 什麼是序列化?erialization 在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式 例如存成檔案,存於緩衝,或經由網路中傳送 以留待後...

hibernate 核心開發介面介紹(重點)

1 annoationconfiguration類 可以指定hibernate.hbm.xml為另外的檔名hibernate.xml,如圖 2 sessionfactory類 產生session的工廠,它裡面維護的最重要的東西就是資料庫連線池。你如果呼叫的是getsession 無論呼叫多少次,拿到...

三 介面開發 REST介面安全之數字簽名

為了保證http請求資料的安全性,防篡改性以及用於標示機構身份,防止偽造的介面請求。一 md5算hash方式 加密規則可以根據雙方介面協商定義,示例如下 1.引數說明2.加密規則 1 將篩選的引數按照第乙個字元的鍵值ascii碼遞增排序 字母公升序排序 如果遇到相同字元則按照第二個字元的鍵值asci...