ืฉื—ืจื•ืจ ืฉืœ PostgREST 9.0.0, ืชื•ืกืคื•ืช ืœื”ืคื™ื›ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœ- RESTful API

ืฉื—ืจื•ืจื• ืฉืœ PostgREST 9.0.0 ื”ืชืจื—ืฉ, ืฉืจืช ืื™ื ื˜ืจื ื˜ ื”ืคื•ืขืœ ื‘ื ืคืจื“ ืขื ื”ื˜ืžืขืช ืชื•ืกืฃ ืงืœ ืžืฉืงืœ ืœ-PostgreSQL DBMS, ื”ืžืชืจื’ื ืื•ื‘ื™ื™ืงื˜ื™ื ืžื‘ืกื™ืก ื ืชื•ื ื™ื ืงื™ื™ื ืœ- RESTful API. ื‘ืžืงื•ื ืœืžืคื•ืช ื ืชื•ื ื™ื ื™ื—ืกื™ื™ื ืœืื•ื‘ื™ื™ืงื˜ื™ื (ORMs), PostgREST ื™ื•ืฆืจ ืชืฆื•ื’ื•ืช ื™ืฉื™ืจื•ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื. ืฆื“ ืžืกื“ ื”ื ืชื•ื ื™ื ืžื˜ืคืœ ื’ื ื‘ืกื™ื“ืจื” ืฉืœ ืชื’ื•ื‘ื•ืช JSON, ืื™ืžื•ืช ื ืชื•ื ื™ื ื•ื”ืจืฉืื”. ื‘ื™ืฆื•ืขื™ ื”ืžืขืจื›ืช ืžืกืคื™ืงื™ื ืœืขื™ื‘ื•ื“ ืฉืœ ืขื“ 2000 ื‘ืงืฉื•ืช ื‘ืฉื ื™ื™ื” ื‘ืฉืจืช ื˜ื™ืคื•ืกื™. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ื›ืชื•ื‘ ื‘- Haskell ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ืœื“ื•ื’ืžื”, ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ืŸ ื”ืจืฉืื•ืช ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืœื‘ื“, ืชื•ื›ืœ ืœื”ืขื ื™ืง ื’ื™ืฉื” ืœื ืชื•ื ื™ื (ื˜ื‘ืœืื•ืช, ืกื•ื’ื™ ืชืฆื•ื’ื•ืช ื•ื ื”ืœื™ื ืžืื•ื—ืกื ื™ื) ื‘ืืžืฆืขื•ืช HTTP. ื‘ืžืงืจื” ื–ื”, ืื™ืŸ ืฆื•ืจืš ืœืงื•ื“ื“ ืชืจื’ื•ื ื›ื–ื” ื•ื‘ื“ืจืš ื›ืœืœ ืžืกืคื™ืงื” ืคืงื•ื“ืช GRANT ืื—ืช ื›ื“ื™ ืœื”ืคื•ืš ืืช ื”ื˜ื‘ืœื” ืœื–ืžื™ื ื” ื“ืจืš ื”- REST API. ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื’ื™ืฉื” ืœืคื™ ืืกื™ืžื•ืŸ (JWT) ื•ืœืืจื’ืŸ "ืจื‘-ืชื›ืœื™ืชื™ื•ืช" ื‘ืืžืฆืขื•ืช ืฉื™ืžื•ืฉ ื‘ืื‘ื˜ื—ื” ื“ื™ื ืžื™ืช ื‘ืจืžืช ื”ืฉื•ืจื•ืช (Row Level Security).

ืžื‘ื—ื™ื ื” ืืจื›ื™ื˜ืงื˜ื•ื ื™ืช, PostgREST ื“ื•ื—ืคืช ืœืขื‘ืจ ืืจื›ื™ื˜ืงื˜ื•ืจื” ืžื•ื›ื•ื•ื ืช ื ืชื•ื ื™ื (Data-Oriented Architecture), ืฉื‘ื” ืฉื™ืจื•ืชื™ ืžื™ืงืจื• ืื™ื ื ืฉื•ืžืจื™ื ืžืฆื‘ื™ื ื‘ืขืฆืžื, ืืœื ืžืฉืชืžืฉื™ื ื‘ื’ื™ืฉื” ืื—ืช ืœื ืชื•ื ื™ื (Data Access Layer) ืœืฉื ื›ืš.

ืฉื—ืจื•ืจ ืฉืœ PostgREST 9.0.0, ืชื•ืกืคื•ืช ืœื”ืคื™ื›ืช ืžืกื“ ื”ื ืชื•ื ื™ื ืœ- RESTful API

ื‘ื™ืŸ ื”ืฉื™ื ื•ื™ื™ื ื‘ื’ืจืกื” ื”ื—ื“ืฉื”:

  • ืœืžื˜ืžื•ืŸ ืกื›ื™ืžืช ื”ืื—ืกื•ืŸ ื ื•ืกืคื• ื˜ื‘ืœืื•ืช ืžื—ื•ืœืงื•ืช, ืžื” ืฉืื™ืคืฉืจ ืœื˜ื‘ืœืื•ืช ื›ืืœื” ืœื”ื˜ืžื™ืข ืคืขื•ืœื•ืช UPSERT ื•-INSERT ื‘ืชื’ื•ื‘ืช Location, ืœื‘ืฆืข ืฉืื™ืœืชื•ืช OPTIONS ื•ืœื™ื™ืฉื ืชืžื™ื›ื” ื‘-OpenAPI.
  • ื‘ืืžืฆืขื•ืช RPC POST ืžื•ืชืจ ืœืงืจื•ื ืœืคื•ื ืงืฆื™ื•ืช ืขื ืคืจืžื˜ืจ ืื—ื“ ืœืœื ืฉื.
  • ืžื•ืชืจ ืœืงืจื•ื ืœืคื•ื ืงืฆื™ื•ืช ืขื ืคืจืžื˜ืจ JSON ืื—ื“ ืœืœื ื”ื›ื•ืชืจืช "Prefer: params=single-object".
  • ืžื•ืชืจ ืœื˜ืขื•ืŸ ื ืชื•ื ื™ื ืžืกื•ื’ bytea ืœืคื•ื ืงืฆื™ื•ืช ื‘ืืžืฆืขื•ืช ืฉืื™ืœืชื•ืช ืขื "Content-Type: application/octet-stream".
  • ืžื•ืชืจ ืœื˜ืขื•ืŸ ื˜ืงืกื˜ ืœืคื•ื ืงืฆื™ื•ืช ื‘ืืžืฆืขื•ืช ืฉืื™ืœืชื•ืช ืขื "ืชื•ื›ืŸ-ืกื•ื’: ื˜ืงืกื˜/ืจื’ื™ืœ".
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื™ืฆื™ืืช ืชื•ื•ื™ื ื‘ืชื•ืš ืกื•ื’ืจื™ื™ื ื›ืคื•ืœื™ื, ืœื“ื•ื’ืžื”, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • ื ื™ืชื ื” ื”ื™ื›ื•ืœืช ืœืกื ืŸ ืžืฉืื‘ื™ื ื‘ืจืžื” ืจืืฉื•ื ื” ืขืœ ืกืžืš ืžืกื ื ื™ื ืžื•ื‘ื ื™ื ("/projects?select=*,clients!inner(*)&clients.id=eq.12".
  • ื”ืื•ืคืจื˜ื•ืจ "is" ืžืืคืฉืจ ืืช ื”ืขืจืš "unknown".
  • ื”ื•ืฉื’ื” ืชืื™ืžื•ืช ืขื PostgreSQL 14 ื•ื”ืชืžื™ื›ื” ื‘-PostgreSQL 9.5 ื”ื•ืคืกืงื”.

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”