Open4
Rustで文字列を絵文字にして画像を返すREST APIを作る
実装しようと思い立った理由
axumを使って何かを作りたかったから。
発想のソース
ねじわささんのMisskeyの絵文字Bot
@emoji@don.nzws.me
仕様
- 300文字以内
- 改行を1文字としてカウント
- 絵文字や記号は出力しない
- フォントは予め用意されている物を指定可能
- 文字色は指定可能。指定されていない場合はランダム
実装につき
言語
Rust
技術
- axum (REST API)
API仕様
- 通信は基本JSON
- 画像を生成したらstatic
- GETとPOSTどちらも実装する
GETの場合
URLをこのような形にする
生成した画像を返す
isbase64パラメーターがある場合はbase64エンコードした文字列を返す
- 形式
http://127.0.0.1/v1/generate?text={300文字以内の文字列(改行コード含む)}&font={フォント名}&color={hexカラーコード}&height={縦(px)}&width={横(px)}&isbase64
- 例
http://127.0.0.1/v1/generate?text=こや〜ん&font=rounded_mplus&color=#0f0f0f&height=1200&width=4096
POSTの場合
JSONで通信
生成した画像の保存先を返す
http://127.0.0.1/static/abcdefg.jpeg
isbase64がtrueの場合はbase64エンコードした文字列を返す
- 形式
{
"text": "{300文字以内の文字列(改行コード含む)}",
"font": "{フォント名}",
"color": "{hexコード}",
"height": "{縦の長さ}",
"width": "{横の長さ}",
"isbase64": "{true or false}"
}
- 例
{
"text": "こや〜ん",
"font": "rounded_mplus",
"color": "#0f0f0f",
"height": 1200,
"width": 4096,
"isbase64": false
}
パラメーター及び変数名
text (string) (必須)
- 絵文字の元の文字列
- 指定がない場合、もしくは空欄な場合は400を返す
font (string)
- デフォルト値 Rounded M+
指定可能フォント
フォント名 指定方法
- Rounded M+
rounded_mplus
- IPAmj 明朝
ipa_mincho
- Noto Sans JP
noto
- ラノベ POP
lanove_pop
color (string)
#0f0f0fの形で送信
- デフォルト値 ランダム
- hexカラーコード
height (int)
- デフォルト値 512
- 画像の縦の長さ
- 最大値 4096
width (int)
- デフォルト値 512
- 画像の横の長さ
- 最大値 4096
isbase64 (boolean)
base64したエンコードを返すか否か
名前はどうしよう…
Mojiji
に決めた
Mojiji is a better emoji generator than other tools. It converts text into emoji