เบเบฒเบ™เบ›เปˆเบญเบ PostgREST 9.0.0, add-ons เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™ RESTful API

เบเบฒเบ™เบ›เปˆเบญเบ PostgREST 9.0.0 เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ™เป‰เปเบฒเบซเบ™เบฑเบเป€เบšเบปเบฒเบเบฑเบš PostgreSQL DBMS, เบเบฒเบ™เปเบ›เบงเบฑเบ”เบ–เบธเบˆเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ RESTful API. เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบ„เบงเบฒเบกเบชเปเบฒเบžเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบงเบฑเบ”เบ–เบธ (ORMs), PostgREST เบชเป‰เบฒเบ‡เบกเบธเบกเป€เบšเบดเปˆเบ‡เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ”เป‰เบฒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบ‡เบˆเบฑเบ”เบเบฒเบ™ serialization เบ‚เบญเบ‡เบเบฒเบ™เบ•เบญเบš JSON, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”. เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ›เบฐเบกเบงเบ™เบœเบปเบ™เป€เบ–เบดเบ‡ 2000 เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบตเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ—เบปเปˆเบงเป„เบ›. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Haskell เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบเบปเบ™เป„เบเบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™ (เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบ›เบฐเป€เบžเบ”เบเบฒเบ™เป€เบšเบดเปˆเบ‡, เปเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ) เบœเปˆเบฒเบ™ HTTP. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบซเบ™เบถเปˆเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ GRANT เปเบกเปˆเบ™เบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เบœเปˆเบฒเบ™ REST API. เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบ token (JWT) เปเบฅเบฐเบˆเบฑเบ” "multitenancy" เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบฅเบฐเบ”เบฑเบšเปเบ–เบงเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง (เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบฅเบฐเบ”เบฑเบšเปเบ–เบง).

เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ, PostgREST เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบ—เบตเปˆเบฎเบฑเบ”เบเบธเบกเบ‚เปเป‰เบกเบนเบ™ (Data-Oriented Architecture), เบšเปˆเบญเบ™เบ—เบตเปˆเบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบšเปเปˆเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เปเบ•เปˆเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบง (Data Access Layer) เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰.

เบเบฒเบ™เบ›เปˆเบญเบ PostgREST 9.0.0, add-ons เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™ RESTful API

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆ:

  • เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเปเบ„เบ” schema เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบ—เบตเปˆเบˆเบฐเบเบฑเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ UPSERT เปเบฅเบฐ INSERT เปƒเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆ, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก OPTIONS, เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ OpenAPI.
  • เบœเปˆเบฒเบ™ RPC POST เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบกเบตเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบกเบตเบŠเบทเปˆเบซเบ™เบถเปˆเบ‡.
  • เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบซเบ™เบถเปˆเบ‡ JSON เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™ "Prefer: params=single-object" header.
  • เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ” bytea เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบกเบต "เบ›เบฐเป€เบžเบ”เป€เบ™เบทเป‰เบญเบซเบฒ: application/octet-stream".
  • เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป‚เบซเบฅเบ”เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŸเบฑเบ‡เบŠเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเบกเบต "เบ›เบฐเป€เบžเบ”เป€เบ™เบทเป‰เบญเบซเบฒ: เบ‚เปเป‰เบ„เบงเบฒเบก/เบ—เปเบฒเบกเบฐเบ”เบฒ".
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบ•เบปเบงเปœเบฑเบ‡เบชเบทเบžเบฒเบเปƒเบ™เบงเบปเบ‡เป€เบฅเบฑเบšเบ„เบนเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบฑเปˆเบ™เบ•เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบ•เบปเบงเบเบญเบ‡เปƒเบ™เบ•เบปเบง (โ€œ/projects?select=*,clients!inner(*)&clients.id=eq.12โ€ เป„เบ”เป‰เบ–เบทเบเบชเบฐเปœเบญเบ‡เปƒเบซเป‰.
  • เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "เปเบกเปˆเบ™" เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ„เปˆเบฒ "เบšเปเปˆเบฎเบนเป‰".
  • เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš PostgreSQL 14 เป„เบ”เป‰เบ–เบทเบเบšเบฑเบ™เบฅเบธเปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš PostgreSQL 9.5 เป„เบ”เป‰เบ–เบทเบเบขเบธเบ”เป€เบŠเบปเบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™