DRF学習
DRF:ジャンゴrestframework(フルネーム)
DRFフレームワークのアクションは、インタフェースを記述するために使用されます
インターフェース:明確な要求は、バックグラウンドデータを取得するための要求のURLリンクに応答して、所望の背景に対応するパラメータが提供され
(コア部:モード要求、アドレス要求、要求パラメータ、応答結果)
書き込みインタフェース:特定のルール(仕様)の規則的な実施形態による、要求を開発しながら、URLリンクの記述を参照して、要求データおよび応答結果
ドキュメントインタフェース:ビューにフロントとリアエンド開発者とテスターに提供され、
(ドキュメントYAPIプラットフォームインターフェース書き込み、ポストマン・ツールのインタフェースアクセス)
インタフェース仕様:
WEBAPIインタフェース仕様:安らか
例:
https://api.oldboy.com/v2/books/?limit=3&ordering=-price&page=2
https://api.oldboy.com/v2/books/(pk)/
#1.api关键字标识接口url
#2.在url链接中标识数据的版本 v
#3.前后台交互的数据资源(复数形式,不能带有动词,动词可以有特殊含义,但不能与资源拼接)
#4.请求方式决定资源操作
get请求: 取 又分为单查群查
post请求: 增 单增群增
put请求: 改(全局) 单改群改
patch请求: 改(局部) 单改群改
delete请求: 删 单删群删
由此形成十大接口
#5. 响应状态码
正常响应2xx:200 常规请求;201 创建成功
重定向响应3xx:301 永久重定向; 302 暂时重定向
客服端异常4xx:403 请求无权限;404 请求路径不存在;405 请求方法不存在
服务端异常5xx:500 服务器异常
#6.响应结果
响应的数据要有状态码,状态信息以及数据本身
```
{
"status": 0,#状态
"msg": "ok",# message信息
"results":[ #结果
{
"name":"肯德基(罗餐厅)",
"location":{ #位置
1 "lat":31.415354, #latitude 纬度
"lng":121.357339 #longtitude 经度
},
"address":"月罗路2380号", #地址
"province":"上海市", # 省份
"city":"上海市", #城市
"area":"宝山区", #区
"street_id":"339ed41ae1d6dc320a5cb37c", # 街道_id
"telephone":"(021)56761006", #手机号
"detail":1, #详情
"uid":"339ed41ae1d6dc320a5cb37c" #唯一标识符
}
...
]
}
```
基于原生django书写满足restful规范的接口:两个url 对应 一个视图类 完成 十大接口
/api/users/
/api/users/(?P<pk>\d+)/
class User(View):
get|post|put|patch|delete方法
CBV要求のライフサイクル:
ルート一致=> URLリクエスト呼び出しas_view()関数を完了するas_view()は前部に要求=>先頭を処理する方法のビュー・クラスの要求分布=>詳細図を完了するために)(ビュービュー=>コールディスパッチの値を返します
インストールDRF:
ピップdjangorestframeworkをインストール
DRF入り口出典:
発送方法APIViewのRest_framework.view直視
ビュークラス継承DRF APIView:rest_framework.viewsからAPIViewインポート
バックビュー表示機能の一部が認証CSRF無効になって- csrf_exempt(ビュー):as_view DRF()メソッド読み取り
要求ディスパッチ分布()、
中を配布プロセスの実装の正面図が完成する
self.initialize_request(リクエスト、*引数:第2のパッケージ要求 、** kwargsから)
の3つの認証:self.initial(リクエスト、*引数、 ** kwargsから)
方法を示す工程図を:リクエストの後に
異例の処置:self.handle_exception(EXC)
二次包装の応答:self.finalize_response(要求、応答、 * argsを、** kwargsから)