##目次
- APIとWeb API
- MVCとMTV
- Model
- Tamplate
- View
- まとめ
##APIとWeb API
###API
Application Programming Interfaceの頭文字を取った略称。
サービスの提供者がそのサービスを利用するために提供するインタフェースの事です。
開発者がAPIを利用すれば、同じ機能をもったサービスを開発する必要がないため
開発効率が向上し、開発費用を抑えることができる。
###Web API
API提供者とAPI利用者をHTTP/HTTPSベースでやりとりするAPI
APIは提供者と利用者のプログラミング言語が同じであることが多いが、
WebAPIは、異なるプログラミング言語でアプリケーションを連携させることが可能であり、
汎用性が高い。
Web APIではREST,SOAPという代表的な実装方式が存在します。
####REST
REST: Representational State Transferの略称。
RESTの考え方に沿ってできたWeb APIをRESTful API,又は、REST APIと呼びます。
1、以下のHTTPメソッドでデータ操作を表します。
GET:取得
POST:作成
PUT,Patch:更新
Delete:削除
2、ステートレス
前回のAPIの結果と2回目の結果で同じ値を返す。
3、URIで操作対象のリソースを判別可能にする
ユーザーというリソースを取得するため、usersというリソース名を付与したとする。
ユーザーIDで下記のようなURIフォーマットでURIを生成し、操作可能とする
URI: http://example.com/api/users/userId/
生成されたURI: http://example.com/api/users/1/
4、レスポンスとしてXML形式かJSON形式で操作結果を戻す
データ操作できた場合、XMLもしくはJSONでデータ操作結果を記述し、HTTPのレスポンスボディーに含め、データを返す。
####SOAP
SOAPはSimpleObject Access Protocolの略称。
リクエスト、レスポンスをXML形式でやり取りする。
##MVCとMTV
以下の表ような違いがあります。
MTV | 説明 | MVC |
---|---|---|
Model | データ、ロジック | Model |
Template | データの見せ方 | View |
View | どのようなデータを見せるか | View |
URLディスパッチャ | URLの振り分け、リクエスト制御 | Controller |
##Model
アプリケーションに必要なデータ、そのデータに付随する処理を記述する場所
Djangoでアプリケーションを作成する際には保存するデータとそのデータに関連する処理を全てModelにまとめる
##Template
Viewから渡ってきたデータを表示するhtmlファイルのこと
##View
Django REST frameworkにおけるViewにおける役割はユーザーからのリクエストを元に、どのAPIを提供するか決定する処理をしている
Viewには以下のようなクラスを継承することで簡単に開発することも可能。
-
FunctionView: Responseを返却する関数型View
-
ClassBasedView: Httpメソッドごとにインスタンスメソッドを定義できる
-
GenericView: クエリセットに紐づくため簡略化した書き方ができる
-
ViewSet
取得、一覧、登録、更新、削除をまとめて管理するビュー
簡潔に素早くAPIロジックを作成したい場合
特別なカスタムロジックを実装しない場合 -
APIView
複雑なAPIロジックを作成したい場合
外部のAPIを呼び出す場合
localのファイルを扱う場合
##最後に
これからDRFを学習する方へ向けての投稿でしたが、次回以降、コード例を載せてより詳しく説明しようと思います。
私がDRFを学習する際、RESTって何?、そもそもAPIとWebAPIの違いがわからないと言った事がありましたので、そういった方のお役に立てれば幸いです。