API
Pythonで非同期処理がしたい 昨今のLLMブーム、MCPブームでまたREST APIを叩く機会が増えてきました。 そしてREST APIのようなネットワーク処理は非同期処理したくなります。 AIではPythonを使うことが多いので、「Pythonでも非同期処理したい」と感じること…
API Gawewayという言葉をよく目にするようになった。 アーキテクチャ議論でよく出てくるのでなにを指しているのか理解しておきたい。 API Gatewayなしの場合 クライアントは「発注」という処理のために複数のサービスをREST APIで呼び出す 各サービスはTLS、…
Web APIにおけるキーの管理について以下の記事で述べた。 architecting.hateblo.jp この中でAPIキーを管理するCloudサービスについて名前だけ紹介したが中身までは触れなかった。 ここでは著名なサービスをいくつか取り上げて簡単に説明する。どんなサービス…
主にHTTPのキャッシュなどで利用されるETagには複数のユースケースが存在する。 今回はETagのユースケースについて見ていこう。 ETag ETagヘッダはRFC 7232(HTTP/1.1 Conditional Requests)で定義されているレスポンスヘッダである。 ETagの値はあるリソー…
背景 HTTPSは以前は暗号化にSSLを利用していた 現在はTLSを利用している 今でもSSLとTLSを指して「SSL」と呼ぶことがある TLSはRFC 8446(The Transport Layer Security (TLS) Protocol Version 1.3)で規定されている RFC 8446の規定は結構緩いがTLS_RSA_WI…
Web API開発においては認証や暗号化のために証明書を利用することは多い。 こういうコードと関係ない部分はセキュリティ担当のインフラ屋さんに丸投げしたくなる気持ちはわかる。 しかしつまらないところではまって時間を無駄にしないよう最低限の知識は身に…
Web APIを叩くにはAPIキー、シークレット、Credentialが必要だ。 こういった情報をどのように管理すべきだろうか。 ハードコードすると変更するのが大変だ。ソフトコードすると少し変更しやすくなるがそれでもビルドが必要になってしまう。それにソフトコー…
エラーが発生しないシステムは存在しない。回復できるエラーからは回復し、回復できないエラーからは適切な情報を残して終了することがシステムには求められる。 Web APIも同様だ。サーバ内でエラーが発生することもある。ネットワーク障害の影響を受けるこ…
Web APIの性能を最適化する方法としてPagination、キャッシング、圧縮がある。今回は圧縮についてを取り上げる。 既に取り上げたPaginationとキャッシュについてはこちらを参照いただきたい。 architecting.hateblo.jp architecting.hateblo.jp メリット 通…
Web APIの性能を最適化する方法としてPagination、キャッシング、圧縮がある。 今回はキャッシングについてを取り上げる。 既に取り上げたPaginationについてはこちらを参照いただきたい。 architecting.hateblo.jp メリット 応答速度が上がる。 サーバの負…
Web APIは元来、軽量なAPIだ。 しかしデータサイズが大きくなれば重くなる。応答速度が極めて重要な場面もあるかもしれない。 そんなとき、Web APIの性能を最適化する方法として利用できるのがPagination、キャッシング、圧縮である。 今回はPaginationにつ…
Basic認証、Digest認証、Bearer認証、OAuth認証方式はRFCで標準化されている認証方式の中で最もよく目にする方式だろう。 Basic認証とDigest認証は多くのサーバ、クライントで実装されており導入障壁が低い認証方式だ。 機密性の高いデータを扱うサービスで…
Web API認証の混沌 混沌を整理する 認証とはなにか 1. 標準化されたHTTP認証方式 2. APIキー認証 3. Form認証、アクセストークン認証 Web API認証の混沌 認証に成功しないとWeb APIを叩くことはできない。まずは認証である。 認証方法がWebサービスによって…
REST APIなどを使っているとPOST、PUT、PATCHの使い方に悩むことがある。特にPUTとPATCHの違いはわかりずらい上に実際の挙動を見て戸惑うこともある。 REST APIで各HTTPメソッドがどのように振る舞うかは実装依存なのでケースバイケースで調査する必要がある…
WebAPIを取り扱う上で欠かせないURLの構造と各要素の呼び方についてまとめる。 ①スキーム 通信手段 ②ホスト名 主にFQDN IPアドレスのこともある ③ポート番号 TCPポート番号 デフォルトは80番 ④リソースパス ディレクトリとファイル名で構成される ⑤クエリ文…
XMLのnamespace Pythonでのnamespaceの扱い方 XMLのnamespace XMLでは同姓同名の要素に対して異なるnamespaceを割り当てることで名前の衝突を避けることができる。 例えばプログラミング言語のPythonを表す要素pythonと蛇のパイソンを表す要素pythonは以下の…
XML処理をする選択肢 インストール import 読み込み 書き込み Iterate 要素へのアクセス XML処理をする選択肢 PythonでXMLを処理するライブラリは多数ある。以下に有名なものを3つ紹介する。 ライブラリ 標準ライブラリ 説明 minidom o 最小のDOM実装 Elemen…
インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…
ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール 2023年以前の方式 import 読み込む 書き込む Iterate 要素へのアクセス (2025年7月29日:PyYAMLのYAML 1.2対応状況について再調査の上、更新) ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2…
基本情報 特徴 YAMLとの比較 オブジェクト 配列 値 JSONはシステム間のデータの交換によく使われるデータフォーマットだ。 YAMLとの違いを理解して状況に応じて適切な選択、データ構造設計、データ処理ができるようになろう。 YAMLについてはこちらで触れて…
基本情報 特徴 シーケンス マッピング 配列とハッシュの組み合わせ スカラ 複数行文字列の扱い アンカーとエイリアス マージ セパレータ フロースタイル 練習問題 YAML JSON YAMLはシステム間のデータ交換や設定ファイルに使われているデータフォーマットだ…