え?http.server って POST メソッドが使えないの???

複数の Raspberry Pi などの端末につながったカードリーダーで FeliCa カードを読んで、http プロトコルでカード情報をサーバに送る仕組みを作ってる。

データを送ってリターンコードを受け取るだけの簡単な API の仕組みなので(データ種はカード新規登録、読み込み時間報告、カード登録キャンセルなど色々あるけど)、サーバ側も Apache とかインストールはせず Python で書こうかと思った。クライアント側のプログラムを Python で書いてるんでね。

ところが、ネット(Qiita「pythonでローカルwebサーバを立ち上げる」など)で拾った下のようなスクリプトを走らせて、そこに Python で作ったクライアントソフトでアクセスしてみると・・・

import http.server
import socketserver

PORT = 3000
Handler = http.server.SimplehttpRequestHandler

with socketserver.TCPServer(("", PORT), Handler) as httpd:
    print("serving at port", PORT)
    httpd.serve_forever()

これが、501 エラーになるのだ。

127.0.0.1 - - [06/Feb/2020 22:41:16] code 501, message Unsupported method ('POST')

ってエラーログ吐いてる。

POST メソッドに対応してないようだ。ええ???

確かに、ブラウザからアクセス(つまり GET メソッドのアクセス)してみたらエラーにならず、サーバスクリプトを置いているディレクトリのファイルリストが表示された。GET メソッドは OK のようだ。

20200206_pyserver.jpg

うーん・・・POST メソッドを使うには、http.server 以外にも import せんといかんのかいな?面倒くさっ。

というわけで、サーバ側は Node.js で組むことにした。(そして今、ほぼ完成してちゃんと動いている)

ただ、Python も JavaScript(しかも Node.js 拡張版)も日頃使ってる言語じゃないので、いちいちググりながら組んでいくのが面倒だけど、ま、これも勉強だからな。
仕事をしつつ勉強できるというのは良いことだ(笑)。そう思っておこう。

トラックバック(0)

このブログ記事を参照しているブログ一覧: え?http.server って POST メソッドが使えないの???

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/5534

コメントする

このブログ記事について

このページは、shinodaが2020年2月 6日 23:35に書いたブログ記事です。

ひとつ前のブログ記事は「19巻は本屋に溢れている」です。

次のブログ記事は「れいぜん会の飲み会」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら