一、Request
#常用屬性 -data :前端以post請求提交的資料都在它中 -FILES :前端提交的檔案 -query_params:就是原來的request.GET -重寫了 __getattr__ -使用新的request.method其實取得就是原生request.method(通過反射實作)
二、Response
1.全域&區域配置模板的顯示方式
rest_framework.response.Response # 通過配置,選擇默認模板的顯示形式(瀏覽器方式,json方式) -組態檔方式(全域) -如果沒有配置,默認有瀏覽器和json -drf有默認組態檔 from rest_framework.settings import DEFAULTS REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( # 默認回應渲染類 'rest_framework.renderers.JSONRenderer', # json渲染器 'rest_framework.renderers.BrowsableAPIRenderer', # 瀏覽API渲染器 ) } -在視圖類中配置(區域) -粒度更小 -class BookDetail(APIView): renderer_classes=[JSONRenderer,]
2.Response構造
原始碼內構造方式: Response(data, status=None, template_name=None, headers=None, content_type=None)
####
data資料不要是render處理之后的資料,只需傳遞python的內建型別資料即可,REST framework會使用renderer渲染器處理data,
data不能是復雜結構的資料,如Django的模型類物件,對于這樣的資料我們可以使用Serializer序列化器序列化處理后(轉為了Python字典型別)再傳遞給data引數,
引數說明:
data: 為回應準備的序列化處理后的資料;status: 狀態碼,默認200;template_name: 模板名稱,如果使用HTMLRenderer時需指明;headers: 用于存放回應頭資訊的字典;content_type: 回應資料的Content-Type,通常此引數無需傳遞,REST framework會根據前端所需型別資料來設定該引數,
3.常用屬性
#常用屬性 -from rest_framework.response import Response -data:回應的字典 -status:http回應的狀態碼 -drf提供給你了所有的狀態碼,以及它的意思 from rest_framework.status import HTTP_201_CREATED -template_name:模板名字(一般不動),了解 -headers:回應頭,字典 -content_type:回應的編碼方式,了解 # 自己封裝一個Response物件 class CommonResponse: def __init__(self): self.code=100 self.msg='' @property def get_dic(self): return self.__dict__ # 自己封裝一個response,繼承drf的Response
4.狀態碼
為了方便設定狀態碼,REST framewrok在rest_framework.status模塊中提供了常用狀態碼常量
#1)資訊告知 - 1xx HTTP_100_CONTINUE HTTP_101_SWITCHING_PROTOCOLS #2)成功 - 2xx HTTP_200_OK HTTP_201_CREATED HTTP_202_ACCEPTED HTTP_203_NON_AUTHORITATIVE_INFORMATION HTTP_204_NO_CONTENT HTTP_205_RESET_CONTENT HTTP_206_PARTIAL_CONTENT HTTP_207_MULTI_STATUS #3)重定向 - 3xx HTTP_300_MULTIPLE_CHOICES HTTP_301_MOVED_PERMANENTLY HTTP_302_FOUND HTTP_303_SEE_OTHER HTTP_304_NOT_MODIFIED HTTP_305_USE_PROXY HTTP_306_RESERVED HTTP_307_TEMPORARY_REDIRECT #4)客戶端錯誤 - 4xx HTTP_400_BAD_REQUEST HTTP_401_UNAUTHORIZED HTTP_402_PAYMENT_REQUIRED HTTP_403_FORBIDDEN HTTP_404_NOT_FOUND HTTP_405_METHOD_NOT_ALLOWED HTTP_406_NOT_ACCEPTABLE HTTP_407_PROXY_AUTHENTICATION_REQUIRED HTTP_408_REQUEST_TIMEOUT HTTP_409_CONFLICT HTTP_410_GONE HTTP_411_LENGTH_REQUIRED HTTP_412_PRECONDITION_FAILED HTTP_413_REQUEST_ENTITY_TOO_LARGE HTTP_414_REQUEST_URI_TOO_LONG HTTP_415_UNSUPPORTED_MEDIA_TYPE HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE HTTP_417_EXPECTATION_FAILED HTTP_422_UNPROCESSABLE_ENTITY HTTP_423_LOCKED HTTP_424_FAILED_DEPENDENCY HTTP_428_PRECONDITION_REQUIRED HTTP_429_TOO_MANY_REQUESTS HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS #5)服務器錯誤 - 5xx HTTP_500_INTERNAL_SERVER_ERROR HTTP_501_NOT_IMPLEMENTED HTTP_502_BAD_GATEWAY HTTP_503_SERVICE_UNAVAILABLE HTTP_504_GATEWAY_TIMEOUT HTTP_505_HTTP_VERSION_NOT_SUPPORTED HTTP_507_INSUFFICIENT_STORAGE HTTP_511_NETWORK_AUTHENTICATION_REQUIRED
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/203956.html
標籤:架構設計
下一篇:rabbitmq集群架構(轉載)
