ืžืขืœื“ื•ื ื’ ืคื•ืŸ PostgREST 9.0.0, ืœื™ื™ื’-ืึธื ืก ืคึฟืึทืจ ื•ื•ืขื ื“ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ืึท RESTful API

PostgREST 9.0.0 ืื™ื– ื‘ืืคืจื™ื™ื˜, ืึท ืกืขืคึผืขืจืึทื˜ืœื™ ืึทืคึผืขืจื™ื™ื˜ื™ื ื’ ื•ื•ืขื‘ ืกืขืจื•ื•ืขืจ ืžื™ื˜ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ืœื™ื™ื˜ื•ื•ื™ื™ื˜ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ PostgreSQL DBMS, ืื™ื‘ืขืจื–ืขืฆืŸ ืึทื‘ื“ื–ืฉืขืงืฅ ืคื•ืŸ ืึท ื™ื’ื–ื™ืกื˜ื™ื ื’ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ืึท RESTful API. ืึทื ืฉื˜ืึธื˜ ืžืึทืคึผื™ื ื’ ืจื™ืœื™ื™ืฉืึทื ืึทืœ ื“ืึทื˜ืŸ ืื™ืŸ ืึทื‘ื“ื–ืฉืขืงืฅ (ORMs), PostgREST ืงืจื™ื™ื™ืฅ ืงื•ืงืŸ ื’ืœื™ื™ึทืš ืื™ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก. ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ื–ื™ื™ึทื˜ ืื•ื™ืš ื›ืึทื ื“ืึทืœื– ืกื™ืจื™ืึทืœื™ื–ื™ื™ืฉืึทืŸ ืคื•ืŸ JSON ืจืขืกืคึผืึธื ืกืขืก, ื“ืึทื˜ืŸ ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ ืื•ืŸ ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ. ื“ื™ ืกื™ืกื˜ืขื ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื™ื– ื’ืขื ื•ื’ ืฆื• ืคึผืจืึธืฆืขืก ืึทืจื•ื™ืฃ ืฆื• 2000 ืจื™ืงื•ื•ืขืก ืคึผืขืจ ืกืขืงื•ื ื“ืข ืื•ื™ืฃ ืึท ื˜ื™ืคึผื™ืฉ ืกืขืจื•ื•ืขืจ. ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Haskell ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ MIT ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ื˜ ื‘ืœื•ื™ื– ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืคึผืจื™ื•ื•ื™ืœืขื’ื™ืข ืžืขืงืึทื ื™ื–ืึทื, ืื™ืจ ืงืขื ืขืŸ ื’ืขื‘ืŸ ืึทืงืกืขืก ืฆื• ื“ืึทื˜ืŸ (ื˜ื™ืฉืŸ, ืžื™ื™ื ื•ื ื’ ื˜ื™ื™ืคึผืก ืื•ืŸ ืกื˜ืึธืจื“ ืคึผืจืึธื•ืกื™ื“ื–ืฉืขืจื–) ืื™ื‘ืขืจ ื”ื˜ื˜ืคึผ. ืื™ืŸ ื“ืขื ืคืึทืœ, ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ืขื ืงืึธื•ื“ ืึทื–ืึท ืึท ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืื•ืŸ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืื™ื™ืŸ GRANT ื‘ืึทืคึฟืขืœ ืื™ื– ื’ืขื ื•ื’ ืฆื• ืžืึทื›ืŸ ื“ื™ ื˜ื™ืฉ ื‘ื ื™ืžืฆื ื“ื•ืจืš ื“ื™ REST API. ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืึทืงืกืขืก ื“ื•ืจืš ื˜ืึธืงืขืŸ (JWT) ืื•ืŸ ืึธืจื’ืึทื ื™ื–ื™ืจืŸ "ืžื•ืœื˜ื™ื˜ืขื ืึทื ืกื™" ื“ื•ืจืš ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื“ื™ื ืึทืžื™ืฉ ืจื•ื“ืขืจืŸ ื–ื™ื›ืขืจื”ื™ื™ื˜ (ืจื•ื“ืขืจืŸ ืœืขื•ื•ืขืœ ื–ื™ื›ืขืจื”ื™ื™ื˜).

ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจืึทืœื™, PostgREST ืคึผื•ืฉื™ื– ืฆื• ืึท ื“ืึทื˜ืŸ-ืึธืจื™ืขื ื˜ื™ื“ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ (ื“ืึทื˜ืึท-ืึธืจื™ืขื ื˜ื™ื“ ืึทืจื˜ืฉื™ื˜ืขืงื˜ื•ืจืข), ื•ื•ื• ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก ื˜ืึธืŸ ื ื™ื˜ ืจืึทื˜ืขื•ื•ืขืŸ ืฉื˜ืึทื˜ืŸ ื–ื™ืš, ืึธื‘ืขืจ ื ื•ืฆืŸ ืึท ืื™ื™ืŸ ืึทืงืกืขืก ืฆื• ื“ืึทื˜ืŸ (ื“ืึทื˜ืึท ืึทืงืกืขืก ืฉื™ื›ื˜ืข) ืคึฟืึทืจ ื“ืขื.

ืžืขืœื“ื•ื ื’ ืคื•ืŸ PostgREST 9.0.0, ืœื™ื™ื’-ืึธื ืก ืคึฟืึทืจ ื•ื•ืขื ื“ืŸ ื“ื™ ื“ืึทื˜ืึทื‘ื™ื™ืก ืื™ืŸ ืึท RESTful API

ืฆื•ื•ื™ืฉืŸ ื“ื™ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ ื“ื™ ื ื™ื™ึทืข ื•ื•ืขืจืกื™ืข:

  • ืคึผืึทืจื˜ื™ืฉืึทื ื“ ื˜ื™ืฉืŸ ื–ืขื ืขืŸ ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืกื˜ืฉืขืžืึท ืงืึทืฉ, ื•ื•ืึธืก ื’ืขืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืคึฟืึทืจ ืึทื–ืึท ื˜ื™ืฉืŸ ืฆื• ื™ืžื‘ืขื“ UPSERT ืื•ืŸ INSERT ืึทืคึผืขืจื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื™ ืึธืจื˜ ืขื ื˜ืคืขืจ, ื•ื™ืกืคื™ืจืŸ ืึธืคึผืฆื™ืขืก ืงื•ื•ื™ืจื™ื– ืื•ืŸ ื™ื ืกื˜ืจื•ืžืขื ื˜ OpenAPI ืฉื˜ื™ืฆืŸ.
  • ื“ื•ืจืš RPC POST ืขืก ืื™ื– ื“ืขืจืœื•ื™ื‘ื˜ ืฆื• ืจื•ืคืŸ ืคืึทื ื’ืงืฉืึทื ื– ืžื™ื˜ ืื™ื™ืŸ ืึทื ื ื™ื™ืžื“ ืคึผืึทืจืึทืžืขื˜ืขืจ.
  • ืขืก ืื™ื– ืขืจืœื•ื™ื‘ื˜ ืฆื• ืจื•ืคืŸ ืคืึทื ื’ืงืฉืึทื ื– ืžื™ื˜ ืื™ื™ืŸ JSON ืคึผืึทืจืึทืžืขื˜ืขืจ ืึธืŸ ื“ื™ "ืคึผืจืขืคืขืจ: ืคึผืึทืจืึทืžืก = ืื™ื™ืŸ-ืึธื‘ื“ื–ืฉืขืงื˜" ื›ืขื“ืขืจ.
  • ืขืก ืื™ื– ื“ืขืจืœื•ื™ื‘ื˜ ืฆื• ืœืึธื“ืŸ ื“ืึทื˜ืŸ ืคื•ืŸ ื˜ื™ืคึผ ื‘ื™ื˜ืข ืื™ืŸ ืคืึทื ื’ืงืฉืึทื ื– ื ื™ืฆืŸ ืจื™ืงื•ื•ืขืก ืžื™ื˜ "ืื™ื ื”ืึทืœื˜-ื˜ื™ืคึผ: ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ / ืึธืงื˜ืขื˜-ืกื˜ืจื™ื".
  • ื“ืขืจืœื•ื™ื‘ื˜ ืฆื• ืœืึธื“ืŸ ื˜ืขืงืกื˜ ืื™ืŸ ืคืึทื ื’ืงืฉืึทื ื– ื ื™ืฆืŸ ืงื•ื•ื™ืจื™ื– ืžื™ื˜ "ืื™ื ื”ืึทืœื˜-ื˜ื™ืคึผ: ื˜ืขืงืกื˜ / ืงืœืึธืจ".
  • ืฆื•ื’ืขืœื™ื™ื’ื˜ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื™ืกืงื™ื™ืคึผื™ื ื’ ืื•ืชื™ื•ืช ื™ืŸ ื˜ืึธืคึผืœ ื‘ืจืึทืงืึทืฅ, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, "? ืงืึธืœ=ืื™ืŸ. ("ื˜ืึธืคึผืœ\" ืฆื™ื˜ื™ืจืŸ"),? ืงืึธืœ = ืื™ืŸ. ("ืฆื•ืจื™ืง \\ ืฆืขื”ืึทืงืŸ")".
  • ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืคื™ืœื˜ืขืจ ืขืจืฉื˜-ืžื“ืจื’ื” ืจืขืกื•ืจืกืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ืคื™ืœื˜ืขืจืก ("/projects?select=*,clients!inner(*)&clients.id=eq.12" ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜.
  • ื“ืขืจ "ืื™ื–" ืึธืคึผืขืจืึทื˜ืึธืจ ืึทืœืึทื•ื– ื“ื™ ื•ื•ืขืจื˜ "ืื•ืžื‘ืึทืงืึทื ื˜".
  • ืงืึทืžืคึผืึทื˜ืึทื‘ื™ืœืึทื˜ื™ ืžื™ื˜ PostgreSQL 14 ืื™ื– ืึทื˜ืฉื™ื•ื•ื“ ืื•ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ PostgreSQL 9.5 ืื™ื– ืึธืคึผื’ืขืฉื˜ืขืœื˜.

ืžืงื•ืจ: opennet.ru

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’