日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RESR API (一)之Requests

發(fā)布時(shí)間:2024/9/5 编程问答 44 如意码农
生活随笔 收集整理的這篇文章主要介紹了 RESR API (一)之Requests 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Requests

如果您正在做基于REST的Web服務(wù),您應(yīng)該忽略request.POST。

- Malcom Tredinnick,Django開發(fā)團(tuán)隊(duì)

REST框架的Request類擴(kuò)展了標(biāo)準(zhǔn)的HttpRequest,增加了對(duì)REST框架請(qǐng)求解析和請(qǐng)求認(rèn)證的支持。


Request parsing

REST框架的Request對(duì)象提供了靈活的請(qǐng)求解析,允許您以與通常處理表單數(shù)據(jù)相同的方式處理JSON數(shù)據(jù)或其他媒體類型的請(qǐng)求。(REST framework's Request objects provide flexible request parsing that allows you to treat requests with JSON data or other media types in the same way that you would normally deal with form data.)

.data

request.data返回請(qǐng)求體的解析內(nèi)容。這與標(biāo)準(zhǔn)的request.POSTrequest.FILES屬性相似,除了:

  • 它包括所有解析的內(nèi)容,包括文件和非文件輸入。
  • 它支持解析除POST以外的HTTP方法的內(nèi)容,這意味著您可以訪問(wèn)PUTPATCH請(qǐng)求的內(nèi)容。
  • 它支持REST框架的靈活的請(qǐng)求解析,而不只是支持表單數(shù)據(jù)。例如,您可以像處理表單數(shù)據(jù)那樣處理JSON數(shù)據(jù)。

有關(guān)詳細(xì)信息,請(qǐng)參閱解析器文檔。

.query_params

request.query_paramsrequest.GET的一個(gè)同義詞,但表達(dá)的含義比request.GET更準(zhǔn)確。

建議使用request.query_params,而不使用Django標(biāo)準(zhǔn)的request.GET。這樣有助于讓代碼更準(zhǔn)確和可讀 - 因?yàn)槿魏蜨TTP方法類型可能包括query參數(shù),而不僅僅是GET請(qǐng)求。

.parsers

The APIView class or @api_view decorator will ensure that this property is automatically set to a list of Parser instances, based on the parser_classes set on the view or based on the DEFAULT_PARSER_CLASSES setting.

通常您不需要訪問(wèn)此屬性。


注意:如果客戶端發(fā)送的內(nèi)容格式不正確,則訪問(wèn)request.data可能會(huì)拋出ParseError。默認(rèn)情況下,REST框架的APIView類或@api_view裝飾器將捕獲錯(cuò)誤并返回400 Bad Request響應(yīng)。

如果客戶端發(fā)送的內(nèi)容的類型不能被解析,那么將會(huì)拋出UnsupportedMediaType異常,默認(rèn)情況下會(huì)被捕獲并返回415 Unsupported Media Type響應(yīng)。


Content negotiation

request公開了一些屬性,允許您決定 the content negotiation stage 的結(jié)果。這允許您實(shí)現(xiàn)一些行為,例如為不同的媒體類型選擇不同的序列化方案。

.accepted_renderer

由 the content negotiation stage 選擇的 renderer實(shí)例。

.accepted_media_type

由 the content negotiation stage 接受的一個(gè)表示媒體類型的字符串。


Authentication

REST框架提供靈活的、per-request 的身份驗(yàn)證,使您能夠:

  • 對(duì)API的不同部分使用不同的身份驗(yàn)證策略。
  • 支持使用多種認(rèn)證策略。
  • 提供與傳入請(qǐng)求相關(guān)聯(lián)的用戶和token信息。

.user

request.user通常返回一個(gè)django.contrib.auth.models.User實(shí)例,盡管行為取決于正在使用的身份驗(yàn)證策略。

如果請(qǐng)求未經(jīng)身份驗(yàn)證,request.user默認(rèn)值為request.userdjango.contrib.auth.models.AnonymousUser的一個(gè)實(shí)例。

有關(guān)詳細(xì)信息,請(qǐng)參閱認(rèn)證文檔。

.auth

request.auth返回任何其他的身份驗(yàn)證上下文。request.auth確切的行為取決于正在使用的身份驗(yàn)證策略,但它通常是被認(rèn)證的請(qǐng)求token的一個(gè)實(shí)例。

如果該請(qǐng)求是未認(rèn)證的或者不存在附加的上下文,request.auth的默認(rèn)為None

有關(guān)詳細(xì)信息,請(qǐng)參閱認(rèn)證文檔。

.authenticators

The APIView class or @api_view decorator will ensure that this property is automatically set to a list of Authentication instances, based on the authentication_classes set on the view or based on the DEFAULT_AUTHENTICATORS setting.

通常您不需要訪問(wèn)此屬性。


Browser enhancements

REST框架支持的幾個(gè)瀏覽器增強(qiáng)功能,例如基于瀏覽器的PUTPATCHDELETE forms

.method

request.method以大寫字符串的形式返回request 的HTTP方法。

基于瀏覽器的PUTPATCHDELETEforms 顯然被支持。

有關(guān)更多信息,請(qǐng)參閱瀏覽器增強(qiáng)文檔。

.content_type

request.content_type返回一個(gè)表示HTTP請(qǐng)求體媒體類型的字符串對(duì)象,如果沒(méi)有提供媒體類型,則返回一個(gè)空字符串。

通常您不需要直接訪問(wèn)請(qǐng)求的內(nèi)容類型,因?yàn)槟ǔR蕾囉赗EST框架的默認(rèn)請(qǐng)求解析行為。

如果您確實(shí)需要訪問(wèn)請(qǐng)求的內(nèi)容類型,則應(yīng)優(yōu)先使用.content_type屬性而不是request.META.get('HTTP_CONTENT_TYPE'),因?yàn)樗鼮榛跒g覽器的非表單內(nèi)容提供transparent 支持。

有關(guān)更多信息,請(qǐng)參閱瀏覽器增強(qiáng)文檔。

.stream

request.stream 返回一個(gè)表示請(qǐng)求體內(nèi)容的流。

通常您不需要直接訪問(wèn)請(qǐng)求的內(nèi)容,因?yàn)槟ǔ⒁蕾囉赗EST框架的默認(rèn)請(qǐng)求解析行為。


標(biāo)準(zhǔn)HttpRequest屬性

Note that due to implementation reasons the Request class does not inherit from HttpRequest class, but instead extends the class using composition.

總結(jié)

以上是生活随笔為你收集整理的RESR API (一)之Requests的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。