#概要
https://qiita.com/donraku/items/147fbea348657a4ffbf1
↑の内容をベースにして、今度はpythonを使ってプリザンターの「API機能」を使ってみることにしました。
pythonを使うにあたってフレームワークを採用してみました。
##前提条件
- プリザンター(https://pleasanter.net/fs/publishes/420234/edit)
- API
- python
- フレームワーク
- FastAPI(https://fastapi.tiangolo.com/ja/)
これらの詳細は省略。
#結論
pythonを使ってプリザンターにデータ登録ができた。(APIで)
フレームワークのFastAPIはなかなか使えることがわかった。
#詳細
##pythonのフレームワークを選定
今後の展開を考えて、フレームワークを利用することに。
ざっと調べてFastAPIが良さそうなので採用。
インストール作業などについては、省略。
情報はこちら。
https://fastapi.tiangolo.com/ja/
##FastAPIでの開発準備
マニュアルをもとに、最小のソースを作ってWebサーバーを起動。
Webサーバーはuvicornというやつ。
ソースはこちら。これだけでOK。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
コマンドプロンプトからWebサーバーを起動。
ポートはデフォルトだと競合したので8010を指定。
すぐ起動します。
>uvicorn main:app --reload --port 8010
INFO: Uvicorn running on http://127.0.0.1:8010 (Press CTRL+C to quit)
INFO: Started reloader process [26816] using statreload
INFO: Started server process [22304]
INFO: Waiting for application startup.
INFO: Application startup complete.
ブラウザで表示を確認。表示OK。
ドキュメントも勝手にできちゃう。
なかなかすごい。余談ですが。
##FastAPI(python)からプリザンターへ登録
試しに「/test_create」というエンドポイントを作成して、その中でプリザンターへデータを登録するようにする。
import requests
import json
from fastapi import FastAPI
from requests_ntlm import HttpNtlmAuth
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/test_create")
def test_create():
url = 'http://192.168.10.10/pleasanter/api/items/12389/create'
json_str = '''\
{
"ApiVersion": 1.1,
"ApiKey": "ea55625bb586d27df01c281e5ef5464e4bbe6bc86d1451a24fd430351198ce0bbabc467cdd1d0ebdf4045ec22922dfce7a9f47a8241559229a7d5129d2329879",
"ClassHash": {
"ClassA": "氏名2",
"ClassB": "所属3",
"ClassC": "場所4"
},
"DateHash": {
"DateA": "2020/11/08 08:00",
"DateB": "2020/11/08 17:00"
},
"Body": "通常勤務です"
}
'''
json_data = json.loads(json_str)
headers = {'content-type': 'application/json; charset=UTF-8'}
response = requests.post(url, json=json_data, headers=headers,
auth=HttpNtlmAuth('xxx\xxx', 'xxx'))
return (response.text)
↑のドキュメントを使って実行すると。。。
成功!!
"{"Id":12410,"StatusCode":200,"Message":"\" 氏名2 \" を作成しました。"}"
プリザンターの画面で確認してOK!
登録できたので、ここまでで終わり。