複数の Raspberry Pi などの端末につながったカードリーダーで FeliCa カードを読んで、http プロトコルでカード情報をサーバに送る仕組みを作ってる。
データを送ってリターンコードを受け取るだけの簡単な API の仕組みなので(データ種はカード新規登録、読み込み時間報告、カード登録キャンセルなど色々あるけど)、サーバ側も Apache とかインストールはせず Python で書こうかと思った。クライアント側のプログラムを Python で書いてるんでね。
ところが、ネット(Qiita「pythonでローカルwebサーバを立ち上げる」など)で拾った下のようなスクリプトを走らせて、そこに Python で作ったクライアントソフトでアクセスしてみると・・・
import http.serverimport socketserverPORT = 3000Handler = http.server.SimplehttpRequestHandlerwith 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 のようだ。
うーん・・・POST メソッドを使うには、http.server 以外にも import せんといかんのかいな?面倒くさっ。
というわけで、サーバ側は Node.js で組むことにした。(そして今、ほぼ完成してちゃんと動いている)
ただ、Python も JavaScript(しかも Node.js 拡張版)も日頃使ってる言語じゃないので、いちいちググりながら組んでいくのが面倒だけど、ま、これも勉強だからな。
仕事をしつつ勉強できるというのは良いことだ(笑)。そう思っておこう。
コメントする