Yípo ìṣẹ̀lẹ̀ Nginx
HTTP, WebSockets, àti I/O ibi ìpamọ́ dátà tí kò dá ìṣiṣẹ́ dúró jọ ń lo yípo ìṣẹ̀lẹ̀ Nginx.
Backend tó fi SQL sí ipò àkọ́kọ́ Alpha
Módù Rust fún Nginx tó ń mú àwọn iṣẹ́ PostgreSQL wá nípasẹ̀ HTTP, tó sì ń fi ìfitónilétí ìyípadà ránṣẹ́ nípasẹ̀ WebSockets.
GitHubHTTP, WebSockets, àti I/O ibi ìpamọ́ dátà tí kò dá ìṣiṣẹ́ dúró jọ ń lo yípo ìṣẹ̀lẹ̀ Nginx.
Àwọn gbólóhùn tí a ti pèsè àti pipelining ń dín iṣẹ́ tí a ń tún ṣe àti ìrìnàjò ìbéèrè àti ìdáhùn sí ibi ìpamọ́ dátà kù.
Ọ̀rọ̀ ìdáhùn JSONB láti PostgreSQL ń kọjá láìyípadà. Bí a bá pa ìṣàyẹ̀wò ìmúdájú àbájáde, a tún yẹra fún parsing JSON ìdáhùn.
Ẹ̀yà tí a kọ́ pẹ̀lú libpq tí a ti ṣe àtúnṣe sí ń mú pípa ẹ̀dà ara ìbéèrè sínú Rust àti libpq kúrò fún àwọn ìbéèrè tó bá yẹ. Yíyá ìrántí fún lílò (borrowing) aládàáṣiṣẹ́ kan àwọn ìbéèrè ńlá tó bá yẹ lórí àwọn ìsopọ̀ ibi ìpamọ́ dátà aláìfipamọ́ (plaintext). Àwọn ẹ̀yà tí a kọ́ lọ́nà déédéé ṣì ń ṣe ẹ̀dà.
Ìdánwò ìwọ̀n iṣẹ́ tó wà lókè lo àwọn buffer tí a ṣe ẹ̀dà wọn. Àwọn ìdáhùn àti TLS ṣì ní pípa ẹ̀dà nínú.
# HTTP endpoints
pgxio_endpoint list_tasks
web.list_tasks read_only;
pgxio_endpoint create_task
web.create_task;
# WebSocket subscription authorization
pgxio_stream tasks
web.authorize_tasks;Àwọn iṣẹ́ SQL ń gba JSON wọlé, wọ́n sì ń dá JSON padà. Wọ́n ń bójú tó àwọn ìbéèrè dátà, àwọn òfin iṣẹ́, àti fífúnni ní àṣẹ.
Sọ àwọn iṣẹ́ tí API rẹ ń mú wá ní pàtó. pgxio ń ṣàyẹ̀wò àwọn JWT, ó sì ń pe iṣẹ́ kọ̀ọ̀kan nínú transaction kan.
Àwọn ìforúkọsílẹ̀ WebSocket tí a fún láṣẹ ń fi àmì ìyípadà ránṣẹ́. Ohun èlò oníbàárà rẹ yóò tún gba àwòrán ipò dátà lọ́wọ́lọ́wọ́ nípasẹ̀ HTTP.
Àwọn ìforúkọsílẹ̀ ń fi àmì ìyípadà ránṣẹ́; wọn kì í ṣe àkọsílẹ̀ ìṣẹ̀lẹ̀ tó wà pẹ́ títí. Nígbà tí àwọn ohun èlò oníbàárà bá tún sopọ̀, wọ́n tún forúkọ sílẹ̀, wọ́n sì gba àwòrán ipò dátà tuntun.
Ṣe àwọn àṣẹ wọ̀nyí láti inú ẹ̀dà kóòdù pgxio tí ó ti wà lórí ẹ̀rọ rẹ. O nílò Docker Compose àti Python 3.9 tàbí ẹ̀yà tó tuntun jù ú lọ.
Àkójọpọ̀ àwọn ohun èlò ìdàgbàsókè tí a fi kún un ń so mọ́ localhost. pgxio jẹ́ sọ́fitiwia ní ìpele alpha; ìṣètò yìí jẹ́ fún ṣíṣàwárí lórí ẹ̀rọ agbègbè.
bin/pgxio init
bin/pgxio up
TOKEN=$(bin/pgxio token alice)
curl http://localhost:8080/v1/create_task \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"title":"Hello from pgxio"}'
curl http://localhost:8080/v1/list_tasks \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'