フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

strapiに郵便番号/住所の情報を登録しアクセスしてみた

はじめに

  • 前回、CSVインポートのプラグインをインストールして環境が破壊されたので手動でデータを登録してみた

郵便番号データ

  • 下記のサイトから住所データをダウンロードしてデータベースに登録する www.post.japanpost.jp

  • ダウンロードしたKEN_ALL.csvファイルはShift-JISのCRLFの改行コードのため、MySQLにインポートする場合、困るので、nkfコマンドで変換する。

# nkf -w -Lu --overwrite KEN_ALL.csv
  • 必要な項目だけCSVファイルにする
# cut -d ',' -f 3,7,8,9 KEN_ALL.CSV > address.csv

データベース登録用SQLを作成する

insert into addresses (post_code,prefectures,city_name,town_name) values('0640941','北海道','札幌市中央区','旭ケ丘');
insert into addresses (post_code,prefectures,city_name,town_name) values('0600041','北海道','札幌市中央区','大通東');
insert into addresses (post_code,prefectures,city_name,town_name) values('0600042','北海道','札幌市中央区','大通西(1〜19丁目)');
insert into addresses (post_code,prefectures,city_name,town_name) values('0640820','北海道','札幌市中央区','大通西(20〜28丁目)');
insert into addresses (post_code,prefectures,city_name,town_name) values('0600031','北海道','札幌市中央区','北一条東');

strapi管理画面で住所情報を登録するためのコンテンツタイプを設定する

  • addressコンテンツタイプを下記のように設定する f:id:PX-WING:20201211235750p:plain

作成した住所のコンテンツタイプをAPIで利用できるようにするための設定

f:id:PX-WING:20201212000137p:plain

APIを実行する

  • APIはlimitの指定をしないとデフォルトで100件までしか取得できない
http://localhost:1337/addresses?_limit=2

[
    {
        "id": 1,
        "post_code": "0600000",
        "prefectures": "北海道",
        "city_name": "札幌市中央区",
        "town_name": "以下に掲載がない場合",
        "published_at": "2020-12-11T12:21:36.000Z",
        "created_at": "2020-12-11T12:07:28.000Z",
        "updated_at": "2020-12-11T12:07:28.000Z"
    },
    {
        "id": 2,
        "post_code": "0640941",
        "prefectures": "北海道",
        "city_name": "札幌市中央区",
        "town_name": "旭ケ丘",
        "published_at": "2020-12-11T12:21:36.000Z",
        "created_at": "2020-12-11T12:14:13.000Z",
        "updated_at": "2020-12-11T12:14:13.000Z"
    }
]

github.com

  • 絞り込み検索はコンテンツタイプで設定したフィールド名を指定してデータの絞り込みが可能となる。
http://localhost:1337/addresses?prefectures=千葉県&city_name=船橋市&_limit=2