2024-05-01から1ヶ月間の記事一覧

FastAPI 日付パラメータのバリデーションを書く

FastAPI で、HTTPーPOSTあるいは、PUT で送るパラメータのバリデーションを書く時、 任意の日付以降の日を受け付けるようにするバリデーションを書く場合 以下のように、Field の gt や ge による書き方はダメである。 一見でできても良さそうなのに、 class…

FastAPI enum をリクエストパラメータにする

enum をリクエストパラメータにする、つまり決められた単語のみを リクエストのパラメータにする。方法である。Enum を定義する from enum import Enum class ModelName(str, Enum): Red = "Red" Green = "Green" Blue = "Blue" Yellow = "Yellow" Enum Mode…

DBの接続状況を調査

SQL

PostgreSQL の場合現在の接続状況を見る。 SELECT * FROM pg_stat_activity 現在接続中のセッションは、 WHERE state = 'active' あるいは、 WHERE xact_start IS NOT NULL で、抽出する。SELECT pg_terminate_backend(PID) で強制的に切断する。 MySQLの場…

FastAPI HTTP 422 エラーの時のレスポンスを定義する。

リクエストのバリデーションエラーによる HTTP status=422 のレスポンスは、 FastAPI デフォルトでは、以下のような JSON のレスポンスを返してしまう。パスパラメータに整数(int)を期待するところに数値に解析できない文字列でリクエストをした時、 { "de…

無料で使える郵便番号→住所検索のAPI

2024年5月時点で調べてみた。 zipcloudポストくん郵便番号検索 - 日本郵便株式会社zipcloudとポストくんは、JSONレスポンスを返してくれるけど、 日本郵便は、JSONを返してくれない。 zipcloud URL https://zipcloud.ibsnet.co.jp/api/search パラメータ名 z…

APIRouter による管理

FastAPI で1つのソースで FastAPI() 生成、パス全てを定義するのは、 構築するAPIが適度な数であれば、肥大化したソースになる可能性も低いし 許容できるであろう。 ・APIがそこそこ多い。 ・複数開発者で分担したい。 これを解決させるために、APIRouter …

List の Map に値を入れる時、

Map<String, List<String>> が存在した時、キーに対するリストの存在をチェックして リストに追加するのに、ついつい、なんとも長いコードを書いてました。 Map の値にリストなどを持たせる場合の書きやすさと効率 - Oboe吹きプログラマの黙示録 にしても、以下のようにしても、 M</string,>…

JSONとYAMLのオンライン変換ツール

JSONからYAMLのみ https://www.site24x7.com/ja/tools/json-to-yaml.htmlhttps://jsonformatter.org/json-to-yaml https://codebeautify.org/json-to-yaml 双方向可能 https://www.bairesdev.com/tools/json2yaml/ ・クリアするボタンやリンクが無いhttps://…

FastAPI の簡単なサンプルを作る

結構、参考になる解説サイトがあるもので、 チュートリアル - ユーザーガイド - FastAPI ここを見て、まずは必要最低限を書きます import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") def root(): a = "sample" return {"hello": a}…

PyCharm でFastAPI プロジェクトの準備

PyCharm Professional版には、FastAPIが備わっていて FastAPIのプロジェクトを新規作成する時に便利ですが、 https://pleiades.io/help/pycharm/fastapi-project.html#coding-assistance Community版を使っていると、以下に相当するインストールをすれば済み…

SQL 行番号など、

SQL

PostgreSQL 8.4 以上で使えるようになったウィンドウ関数 テーブルのレコード総数を SELECT句に含めたい場合 COUNT(1) OVER() を指定する。 SELECT *, COUNT(1) OVER() AS total FRON items これは、MySQL でも使える。同様に行番号を SELECT句に付与したい…