0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

郵便番号辞書をAPIでアクセスできるようにする

Posted at

FastAPIで郵便番号辞書をAPI化

日本郵便から提供されているデータを加工したものを実際に利用できるようにするためにFastAPIを使ってAPI化してみました。とはいえ経験は皆無なのでwebでの情報をもとに見よう見まねです。

環境の準備

まずはFastAPIとそれを実行するためのuvicornをインストールします。

$ pip install uvicorn pydantic fastapi

API用のスクリプト

作成したFastAPI対応部分を載せておきます。当初はoriginsやapp.add-middleware()の部分は記述していなかったのですが、next.jsのコードからAPIアクセスでエラーが発生していました。全然理由がわからなかったのですが、microsoft edgeの開発者モードでの Copilot からのサジェスチョンに従って追加したところ見事に動作しました。
現状ではnext.jsもこのAPIも同じWSL2のubuntu上で動かしています。originsは実際の環境に合わせて変更が必要になると思います。

postapi.py
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import postdb

app = FastAPI()

origins = [
    "http://localhost",
    "http://localhost:3000",
]

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/postdb/{pcode}")
async def read_pcode(pcode:str):
    #print(pcode)
    connection = postdb.init()
    result = postdb.search(connection, pcode)
    postdb.close(connection)
    #print(result)
    return result

postdb.init()、postdb.close()はDBとのコネクション、コネクション解除を行っています。postdb.search()は指定された郵便番号に紐づく住所情報を検索しています。

APIの起動

$ uvicorn postapi:app --reload --host 0.0.0.0
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?