Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Share Everything API

Share Everythingのバックエンドです。

nginx + mongo + node + typescript + dockerで開発しています。

堅牢性よりも可用性を重視するためにapache/mysqlではなくnginx/mongoの組み合わせでサーバを構築します。

node/tsを選択したのはただの趣味です。

APIは基本的にRESTfulをベースとして設計。 ただしRESTをちゃんと理解しているわけではないのでこれであっているかは謎です。

現状の実装は全てをテキストとして保持します。 画像もbase64でエンコードしてdataurl形式で持っている状態です。 将来的には画像は別で管理したいところ。S3とか。

MongoDBはAtlas、APIサーバはAWSで本番運営しています。 運営しているドメインはshare-everything-api.cosocaf.comです。 TLS対応しているのでhttps://share-everything-api.cosocaf.comへアクセスできます。

API概要

このサービスは複数の集団がそれぞれ独立した空間を持ち、その空間内で特定の値を共有するものです。

それぞれの共有空間をroomと(勝手に)呼び、それを操作するAPIを定義します。

GET /rooms/:id

:idで示される共有空間に格納されている値を取り出す。

APIから返される値のフォーマットは次の通り。

{
  "status": "success" | "error",
  // もしstatusがsuccessならば
  "result": {
    "content": "<共有空間に格納されている値>",
  },
  // もしstatusがerrorならば
  "reason": "<エラーになった原因>",
}

POST /rooms

共有空間を新規作成する。

APIから返される値のフォーマットは次の通り。

{
  "status": "success" | "error",
  // もしstatusがsuccessならば
  "result": {
    "id": "<共有空間のID>"
  },
  // もしstatusがerrorならば
  "reason": "<エラーになった原因>",
}

PUT /rooms/:id

:idで示される共有空間に値を格納する。

APIから返される値のフォーマットは次の通り。

{
  "status": "success" | "error",
  // もしstatusがsuccessならば
  "result": {},
  // もしstatusがerrorならば
  "reason": "<エラーになった原因>",
}

また、送信者はリクエストのボディに次のフォーマットのデータを格納しなければならない。

HTTPヘッダにContent-Type: application/jsonを指定すること。

{
  // formatで示された形式にフォーマットされたデータ
  "content": "<格納する値>",
  // 生テキストを保持するならtext, 短縮URL化するならurl
  "type": "text" | "url",
  // contentの形式。rawは未加工、base64はBase64形式。
  "format": "raw" | "base64",
}

DELETE /rooms/:id

:idで示される共有空間を削除する。

APIから返される値のフォーマットは次の通り。

{
  "status": "success" | "error",
  // もしstatusがsuccessならば
  "result": {},
  // もしstatusがerrorならば
  "reason": "<エラーになった原因>",
}

開発環境の構築方法

リポジトリはクローンしている前提です。

  • serverへ移動します。
cd ./server
  • npmを設定し、ビルドします。
npm install
npm run build
  • Dockerを起動します。
cd ../
docker-compose up --build

以上です。まとめると次のコマンドになります。

cd ./server
npm install
npm run build
cd ../
docker-compose up --build

これで動くはず。多分。