RESTful

https://e-words.jp/w/RESTful_API.html
REST(REpresentational State Transfe - 代表的な状態の転送)は、API仕様ではなく以下の設計原則のこと。
URIでアクセスできる
・(リクエストが)ステートレスである
・情報に、別の情報のURLリンクを含められる
・取得、作成、更新、削除に、HTTPメソッド(GET、POST、PUT、DELETE)を利用する
RESTfulAPIは、上記の原則を満たしたWebAPI。
厳密な定義があるわけではなく、GET、POST、PUT、DELETEでhttpリクエストを投げてそれに対応する操作を行って結果を返すのがRESTful API くらいの意味。
応答は、XML、HTML、JSONCSV、プレーンテキストなどなんでもいい。



REST定義にあるわけではないが以下のような作りをすることが多い。
・URLは複数形で定義
・応答をhttpステータス(データ無しなら404とか)で戻す
・PUTで更新をしたらその更新結果を応答として得る(更新結果を改めてGETしなくていい)

pythonのwithは、c#で言うusing。

https://blog.t5o.me/post/20150819/python-with-csharp-using-diff.html
pythonのwithは、C#VB.NETにおけるusingにあたる構文。
宣言されるものはコンテキストオブジェクトと呼ばれ、IDisposable インターフェイスのDispose()にあたる__exit__()メソッドとコンストラクタの次に呼ばれる__enter__()メソッドを持つ必要がある。
ただし完全に同じものではなく、withはスコープを形成せず、withで定義したものはwithブロックの外側からでも参照できる。
javascriptVBなどのwithとは全く違う機能である。



ただしgradioにおいては、画面要素のコンテナであるblcokがコンテキストオブジェクトとして宣言され、__enter__()でContext.blockというグローバル変数的なものにその参照をコピーしている。
各画面要素オブジェクトがその参照を元に処理を行うので、結果的に「現在のwithブロック」に対して処理が行われるという、javascriptVBなどのwithに近い動作になっている。