2024-06-01から1ヶ月間の記事一覧
SpringBoot のプロジェクト生成に便利なのが、 以下です。https://start.spring.io/説明は、、、 spring.io
Java コードだけ?(こう限定していいのか微妙だけど)Webフレームワークである Vaadin をちょっと始めてみる Vaadin | The Web App Platform for JavaGetting Started | Vaadin Docs ここを参考に、もしくはこれに従って、、 Maven project の場合、 バージ…
正規表現だけでメールアドレスチェックをして良しとするのは あまり良くない。 メールアドレスが指すドメインだけでも、DNSサーバに問い合わせたい。 Java の場合、 以下を参考に、DNS lookUp で検証する。 https://docs.oracle.com/javase/jp/6/technotes/g…
pydantic の EmailStr を使用したバリデーションチェックは https://github.com/JoshData/python-email-validator が使用されているのだが、EmailStrは、 "名称" <address@domain> の形式を受け付けてくれる。 from pydantic import BaseModel, EmailStr, ValidationError cl</address@domain>…
MySQL 、PostgreSQL についての UPSERT 文はこれまでに以下を書いてきたが、 Oracle の UPSERT (MERGE)を書いてなかったので、書き方を書いておくことにした。MySQL で UPSERT する時に考えること - Oboe吹きプログラマの黙示録PostgreSQL のアップサート…
良く以下を使ってはいたが、、、 oboe2uran.hatenablog.com.com や .net 末尾3文字については、厳しくする正規表現^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2}|\.(biz|com|org|net|info)){1}$
以前、あまり思いつかずこのように書きました。 oboe2uran.hatenablog.com2つの連携した Map から、値を取得する時に使えますね。例)以下のような2つの Map Map<String, String> amap = Map.of("Orange", "i001", "Lemon", "i002", "Apple", "i003", "banana", "i004"); M</string,>…
ここまでくると、Flask 、 django なんかなくたって、FastAPI で事足りる気がしてきた、fastapi.tiangolo.comqiita.com qiita.com fastapi.tiangolo.com静的Webページアクセスの為の static 等は、 例えば、以下のディレクトリ構成である場合root ├─ main.py…
ログ出力など通常の表示のための出力やデータダンプで隠蔽させたい プロパティを定義するのに、Pydantic の SecretStr は有効な方法です。 from pydantic import BaseModel, SecretStr class Item(BaseModel): password: SecretStr item = Item(password='ws…
FastAPI で使う場面でなくても、SQLAlchemy や、いろんな場面でも使えるし むしろ使った方が良いと思う pydantic 公式マニュアルは、→ https://docs.pydantic.dev/latest/必要なインポート from pydantic import BaseModel, ValidationError サンプル class …
先日書いたリクエストバリデーションのハンドラではなく、 (https://oboe2uran.hatenablog.com/entry/2024/05/25/201834) リクエストを処理している時に発生する例外を独自で定義して そのハンドリングをする。 結局、「リクエスト不正」を意味する 400 を…
pattern で正規表現を指定すれば良い。全角カナの正規表現、必須の例 Field で pattern を指定 from pydantic import BaseModel, Field from fastapi import FastAPI class Item(BaseModel): name: str=Field(description="品名") kana: str=Field(descripti…
緩すぎる規定の RFC4180 だけのルールで厳しい場合がある。 csv.reader と csv.DictReader の引数で読込みオプションをいろいろ指定できるが、、、 quotechar='"' 括り文字、すなわち、デリミタ、quotechar 、改行、特殊文字を囲む時の1文字doublequote=Tru…
Insomniaツールを使ってファイルアップロードを行うリクエストの 作り方が解りにくかった。 Content-Type: multipart/form-data のリクエストをする時である。POST、URL を書いてから、「Body」タブをクリックして「Multipaert Form」を選択する。 すると、…