APIは、これから作るであろう、Nuxt.jsからアクセスする際に使用するつもりです。APIをなるべく簡単に作成することが目的です。Djangoそのものにはあまり深入りしません。Framework]を使用します。Frameworkを仕事で使用している関係で、少しだけ理解しているので、時間短縮のために使用しました。他のライブラリと比較すると少し自由度が低いと思います。「型」として覚えてしまえばいいのかもしれません。ソースコードについてここに今回実装した、ソースコード一式格納してあります。以下のように環境設定します。django-filterバージョンは以下の通りです。APIアプリケーションを作成します。tableappこの時点で以下のディレクトリ構成になっています。settings.pysettings.pyに以下を追加します。API用に追加していますが、LANGUAGE_CODEとTIME_ZONEは、admin画面(後述)用に追加しています。APIを作成していきます。モデル定義モデルを定義します。nuxt.jsのサンプルが住所録的なものなので、Addrsとして定義しました。見た通りですが、jobsの所だけ妥協しました。本来なら配列を使用するところです。少々面倒なので、今回は文字列にしています。データベース構築データベース情報を設定します。test_rest_api/settings.pyに既に設定されていますが、ここでは、SQLite3を使用します。admin画面の作成admin画面を作成します。APIには直接関係ないですが、設定しておくと画面からデータを設定できます。以下は、管理者ユーザの作成です。successfully.モデルを管理画面から変更できるようにしておきます。pass以下で起動します。0.0.0.0:18899以下でadmin画面にアクセスできます。http://192.168.132.129:18899/adminログイン画面が以下です。ログインすると以下の画面になります。データを追加しておきます。Frameworkを追加していきます。Serializers追加Serializersとは、データ入出力時に使用する、モデルへの橋渡しをするクラスです。Formクラスと似ています。ここでは、AddrSerializersを追加します。Addrモデルとの橋渡しです。fieldsには、APIとして返却したいカラムを列挙します。ViewSet追加ViewSetとは、APIのView(通常で言うところのコントローラ)を抽象化したクラスです。自動的に、createや、destroyを定義してくれます。以下の設定はModels.pyに依存する場合の記述方法です。モデルに依存しない場合は、viewsets.ViewSetを使用できます。ここでは、APIを定義することを優先するので、簡略化して記述します。Urlpatterm追加URL設定を追加します。APIのURLを設定します。AddrViewSet)以下は、全体的なプロジェクト側のURL設定です。「#追加部分」を追加します。追加]以下で起動します。Sharingの略です。Webブラウザから別ドメインにアクセスするのを可能にする仕組みです。通常、HTML(を含むJavaScript)内からダウンロードサイトからしかアクセスできないよう、Webブラウザが実装していますが、CORSの仕組みを使うと別ドメインへアクセスできます。CORSの設定は、JavaScriptが別ドメインにアクセスしなければ基本的に不要です。設定方法は以下の通りです。APIアクセス以下でAPIコンソールにアクセスできます。http://192.168.132.129:18899/apihttp://192.168.132.129:18899/api/addrsにブラウザからアクセスすると、以下のような画面を表示します。curlすると通常のJSONが取得できます。ディレクトリ構成ディレクトリ構造は以下の通りです。OpenAPIでAPI仕様書の自動生成ちょっと前は、SwaggerといわれていたAPI定義方法です。見栄えもよいので、設定しておこうと思います。スキーマスキーマは以下のように生成します。いっても、実際にはスキーマを出力しても使うところがありません。schema.yml以下のようなschema.ymlが自動生成されます。API定義表示(swagger-ui)swaggerのAPI定義が表示できるように設定しておきます。プロジェクト側(table_rest_api側)のurls.pyに以下を追加しておきます。API側のURL設定にしなくても動作するようです。name='swagger-ui'),あとはtemplates/swagger-ui.htmlを設定しました。以下は参考文献の通りにしただけです。</body></html>以下にアクセスすると、API定義が出てきます。設定していないのに出力出来て便利です。http://192.168.132.129:18899/swagger-ui/6.おわりにここではAPIの設定だけ行いました。次はAPIを使用したnuxt.jsのサンプルを作成したいと思います。勉強用に、PythonでPostgresqlを制御しようと思います。前回でPostgreSQLと、データベース/テーブルまでは用意したので、今回はAPIを作成しようと思います。...Python3/ある日付から日付までの月/日/時間ごとの時刻を算出する小ネタです。指定したときの、各時間間隔での時刻取得したかったです。perlライブラリちょっとだけperlの機能修正をしたので、そのときに使用したライブラリについて書こうと思います。