แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ 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) แž“แžทแž„แžšแŸ€แž”แž…แŸ† "แž—แžถแž–แž…แž˜แŸ’แžšแžปแŸ‡" แžแžถแž˜แžšแž™แŸˆแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แž€แž˜แŸ’แžšแžทแžแž‡แžฝแžšแžŠแŸแž€แžแžถแž˜แžœแž“แŸ’แž (แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แž€แž˜แŸ’แžšแžทแžแž‡แžฝแžšแžŠแŸแž€)แŸ”

แžแžถแž˜แžŸแŸ’แžแžถแž”แžแŸ’แž™แž€แž˜แŸ’แž˜ PostgREST แž‡แŸ†แžšแžปแž‰แž†แŸ’แž–แŸ„แŸ‡แž‘แŸ…แžšแž€แžŸแŸ’แžแžถแž”แžแŸ’แž™แž€แž˜แŸ’แž˜แžแž˜แŸ’แžšแž„แŸ‹แž‘แžทแžŸแž‘แžทแž“แŸ’แž“แž“แŸแž™ (Data-Oriented Architecture) แžŠแŸ‚แž›แžŸแŸแžœแžถแž˜แžธแž€แŸ’แžšแžผแž˜แžทแž“แžšแž€แŸ’แžŸแžถแž‘แžปแž€แžšแžŠแŸ’แž‹แžŠแŸ„แž™แžแŸ’แž›แžฝแž“แžฏแž„ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แžšแžพแž€แžถแžšแž…แžผแž›แž”แŸ’แžšแžพแž‘แžทแž“แŸ’แž“แž“แŸแž™แžแŸ‚แž˜แžฝแž™ (Data Access Layer) แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžšแžฟแž„แž“แŸแŸ‡แŸ”

แž€แžถแžšแž…แŸแž‰แž•แŸ’แžŸแžถแž™ PostgREST 9.0.0 แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž”แž“แŸ’แžแŸ‚แž˜แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แžœแŸ‚แžšแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™แž‘แŸ…แž‡แžถ RESTful API

แž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž“แŸ…แž€แŸ’แž“แžปแž„แž€แŸ†แžŽแŸ‚แžแŸ’แž˜แžธแŸ–

  • แžแžถแžšแžถแž„แžŠแŸ‚แž›แž”แžถแž“แž”แŸ‚แž„แž…แŸ‚แž€แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž€แŸ’แž“แžปแž„แžƒแŸ’แž›แžถแŸ†แž„แžŸแž˜แŸ’แž„แžถแžแŸ‹แž‚แŸ’แžšแŸ„แž„แž€แžถแžšแžŽแŸแž•แŸ’แž‘แžปแž€ แžŠแŸ‚แž›แž’แŸ’แžœแžพแžฑแŸ’แž™แžœแžถแžขแžถแž…แž‘แŸ…แžšแžฝแž…แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแžถแžšแžถแž„แž”แŸ‚แž”แž“แŸแŸ‡แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แž”แŸ‹แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžš UPSERT แž“แžทแž„ INSERT แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแž†แŸ’แž›แžพแž™แžแž”แž‘แžธแžแžถแŸ†แž„ แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžŸแŸ†แžŽแžฝแžš 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โ€ แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แž‡แžผแž“แŸ”
  • แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžš "แž‚แžบ" แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžแž˜แŸ’แž›แŸƒ "แž˜แžทแž“แžŸแŸ’แž‚แžถแž›แŸ‹" แŸ”
  • แž—แžถแž–แž†แž”แž‚แŸ’แž“แžถแž‡แžถแž˜แžฝแž™ PostgreSQL 14 แžแŸ’แžšแžผแžœแž”แžถแž“แžŸแž˜แŸ’แžšแŸแž… แž แžพแž™แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ PostgreSQL 9.5 แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž‰แŸ’แžˆแž”แŸ‹แŸ”

แž”แŸ’แžšแž—แž–: opennet.ru

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹