PostgREST8.0.0をWindows10で試してみました

###PostgREST8.0.0をWindows10で実行

####PostgreSQLから、比較的簡単にWEB APIとして、使用できるようなので試してみました。
Windows10 Pro
PostgreSQL13.4
PostgREST8.0.0
で試してみました。

-------

####最初のインストール時に、つまずいたこと
https://postgrest.org/en/v8.0/install.html
サイトのInstallationの項目から
choco install postgrest
scoop install postgrest
とあるので、試してみましたが
ChocolateyとScooptが、どうも、こちらの知識不足のようで、うまく動作できませんでした。
(こんな感じ)
![scoop_err04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88517/84c83b81-902d-5e86-6210-915c589e767c.png)

-------

####なので、インストールをあきらめかけていたときに、サイトを見ていると、githubにリンクされて、zipがダウンロードできそうなので、違う方法を、試してみたら動作したようなので、で投稿させていただきます。(正解なのかは、不明ですが)行った手順を投稿させていただきます。
1.PostgreSQLをインストール
2.PostgRESTのWindows用zipを解凍して、postgrest.exe　をPostgreSQLのインストール先のbinにコピー(これがインストールに該当する?)

(以下PostgRESTのサイトの　Tutorial 0 - Get it Running　より)

3.PostgREST用のAPI用の設定
4.PostgREST用のtutorial.confを作成
5.PostgRESTを実行し動作確認

-------

####1.PostgreSQLのWindows版をインストール
今回は
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
から
postgresql-13.4-1-windows-x64.exe 

-------
####2.PostgRESTのWindows用zip取得
https://postgrest.org/en/v8.0/releases/v8.0.0.html
の　 PostgREST v8.0.0 release page.　から　https://github.com/PostgREST/postgrest/releases/tag/v8.0.0
に移動して　postgrest-v8.0.0-windows-x64.zip　を取得後、解凍。

postgrest.exe　をPostgreSQLのインストール先のbinにコピー
(postgres　に　t がつくだけなので、見間違えそうになりますが、別のexe です。)

####3.PostgREST用のAPI用の設定
ここからは、https://postgrest.org/en/v8.0/tutorials/tut0.html
を参考にして、PSQLで実行します。

```sql
create schema api;
```
テーブルの作成

```sql
create table api.todos (
  id serial primary key,
  done boolean not null default false,
  task text not null,
  due timestamptz
);
```
データの挿入

```sql
insert into api.todos (task) values
  ('finish tutorial 0'), ('pat self on back');
```
```sql
create role web_anon nologin;
```
```sql
grant usage on schema api to web_anon;
```
```sql
grant select on api.todos to web_anon;
```

***サイトのこの行のパスワードを変更***　　create role authenticator noinherit login password 'mysecretpassword';
***PostgreSQL -13.4-1をインストールした時のパスワードに変更します***

```sql
create role authenticator noinherit login password 'pg13dbPasswd';
```
```sql
grant web_anon to authenticator;
```
```sql
\q
```
で終了


####4.PostgREST用のtutorial.confを作成
***サイトのこの行のパスワードとポートを変更***　　db-uri = "postgres://authenticator:mysecretpassword@localhost:5433/postgres"
をPostgreSQL -13.4-1をインストールした時のパスワードと標準のポートの5432に変更します

```text
db-uri = "postgres://authenticator:pg13dbPasswd@localhost:5432/postgres"
db-schema = "api"
db-anon-role = "web_anon"
```
で tutorial.conf を作成し、postgrest.exe　をPostgreSQLのインストール先のbinにコピー
(デフォルト値でのインストールなら　C:\Program Files\PostgreSQL\13\bin　です)

####5.PostgRESTを実行
コマンドプロンプトから

```text
cd C:\Program Files\PostgreSQL\13\bin
postgrest tutorial.conf
```
実行されている画面
![022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88517/d5ead9b4-6460-6633-4b23-3f29ce8e2ce2.png)
ブラウザで

```text
http://127.0.0.1:3000/todos
```
データの挿入での２行が JSON で表示取れています。
![023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88517/456bc4f9-fd03-47c2-28fa-ff58d4d48c13.png)




####その他、試してみた作業行中のエラー画面など
tutorial.conf　のポートを5433　で実行したときのエラー 
![err_000_5433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88517/bf2926af-9fba-5266-6d91-f3c9b472ffc1.png)

tutorial.conf　の文字コードを間違えている場合エラー
![err_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/88517/bd22db5f-e092-7ba1-1131-ed3c960a6843.png)

-------
RESTful APIのサーバーサイドの構築に慣れていないもので、簡単に構築できるものはと、探していて見つけたのですが、日本語記事がうまく見つけられなかったのと、Tutorial 0 - Get it Running　が当方で正確に理解できなかったので、実行までにうまく良かったことなとでも投稿させていただきました。

フロントサイド開発の方や、異なるRESTful APIで構築されている方の業務処理での参考やヒントになれば幸いでございます。

また、記述に間違いがありましたら、ご指摘ください。

画像付きで、もう少し詳しい手順の記事は
[PostgREST 8.0.0 + PostgreSQL -13.4-1 + Windows10でテスト(1)](http://a23.sblo.jp/article/188950122.html)
[PostgREST 8.0.0 + PostgreSQL -13.4-1 + Windows10でテスト(2)](http://a23.sblo.jp/article/188950189.html)