LoginSignup
3
4

More than 3 years have passed since last update.

プリザンターのAPIを使ってみる(python/FastAPI)

Last updated at Posted at 2020-11-08

概要

https://qiita.com/donraku/items/147fbea348657a4ffbf1
↑の内容をベースにして、今度はpythonを使ってプリザンターの「API機能」を使ってみることにしました。
pythonを使うにあたってフレームワークを採用してみました。

前提条件

これらの詳細は省略。

結論

pythonを使ってプリザンターにデータ登録ができた。(APIで)
フレームワークのFastAPIはなかなか使えることがわかった。

詳細

pythonのフレームワークを選定

今後の展開を考えて、フレームワークを利用することに。
ざっと調べてFastAPIが良さそうなので採用。
インストール作業などについては、省略。

情報はこちら。
https://fastapi.tiangolo.com/ja/

FastAPIでの開発準備

マニュアルをもとに、最小のソースを作ってWebサーバーを起動。
Webサーバーはuvicornというやつ。

ソースはこちら。これだけでOK。

main.py
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。

image.png

ドキュメントも勝手にできちゃう。
なかなかすごい。余談ですが。

image.png

FastAPI(python)からプリザンターへ登録

試しに「/test_create」というエンドポイントを作成して、その中でプリザンターへデータを登録するようにする。

main.py
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)

image.png

↑のドキュメントを使って実行すると。。。

image.png

成功!!
"{\"Id\":12410,\"StatusCode\":200,\"Message\":\"\\" 氏名2 \\" を作成しました。\"}"

image.png

プリザンターの画面で確認してOK!

登録できたので、ここまでで終わり。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4