āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ā§āĻŸ 9.0.0 āĻāĻ° āĻ°āĻŋāĻ˛āĻŋāĻœ, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ RESTful API āĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻĄ-āĻ…āĻ¨

PostgREST 9.0.0-āĻāĻ° āĻ°āĻŋāĻ˛āĻŋāĻœ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ DBMS-āĻ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŸāĻ“āĻ¯āĻŧā§‡āĻŸ āĻ…ā§āĻ¯āĻžāĻĄ-āĻ…āĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ†āĻ˛āĻžāĻĻāĻžāĻ­āĻžāĻŦā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°, āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ RESTful API-āĻ¤ā§‡ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ•āĻ°ā§‡āĨ¤ āĻŦāĻ¸ā§āĻ¤ā§āĻ¤ā§‡ (ORMs) āĻ°āĻŋāĻ˛ā§‡āĻļāĻ¨āĻžāĻ˛ āĻĄā§‡āĻŸāĻž āĻŽā§āĻ¯āĻžāĻĒ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, PostgREST āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ­āĻŋāĻ‰ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻĻāĻŋāĻ•āĻŸāĻŋ JSON āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž, āĻĄā§‡āĻŸāĻž āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻŽā§‹āĻĻāĻ¨ā§‡āĻ° āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨āĻ“ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ 2000āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ•ā§‹āĻĄ Haskell āĻ˛ā§‡āĻ–āĻž āĻāĻŦāĻ‚ MIT āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒā§āĻ°āĻŋāĻ­āĻŋāĻ˛ā§‡āĻœ āĻŽā§‡āĻ•āĻžāĻ¨āĻŋāĻœāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ HTTP-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĄā§‡āĻŸāĻž (āĻŸā§‡āĻŦāĻŋāĻ˛, āĻĻā§‡āĻ–āĻžāĻ° āĻ§āĻ°āĻ¨, āĻāĻŦāĻ‚ āĻ¸āĻžā§āĻšāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ) āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻŦāĻžāĻĻāĻ•ā§‡ āĻāĻ¨āĻ•ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡ āĻāĻŦāĻ‚ REST API-āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ GRANT āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻ‡ āĻ¯āĻĨā§‡āĻˇā§āĻŸāĨ¤ āĻĄāĻžāĻ‡āĻ¨āĻžāĻŽāĻŋāĻ• āĻ¸āĻžāĻ°āĻŋ āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ (āĻ°ā§‹ āĻ˛ā§‡āĻ­ā§‡āĻ˛ āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻ°āĻŋāĻŸāĻŋ) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŸā§‹āĻ•ā§‡āĻ¨ (JWT) āĻĻā§āĻŦāĻžāĻ°āĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻāĻŦāĻ‚ "āĻŽāĻžāĻ˛ā§āĻŸāĻŋāĻŸā§‡āĻ¨ā§‡āĻ¨ā§āĻ¸āĻŋ" āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤

āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯āĻ—āĻ¤āĻ­āĻžāĻŦā§‡, PostgREST āĻāĻ•āĻŸāĻŋ āĻĄā§‡āĻŸāĻž-āĻ“āĻ°āĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻĄ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° (āĻĄā§‡āĻŸāĻž-āĻ“āĻ°āĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻĄ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°) āĻĻāĻŋāĻ•ā§‡ āĻ ā§‡āĻ˛ā§‡ āĻĻā§‡āĻ¯āĻŧ, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸āĻ—ā§āĻ˛āĻŋ āĻ°āĻžāĻœā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻāĻ•āĻ• āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ (āĻĄā§‡āĻŸāĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ˛ā§‡āĻ¯āĻŧāĻžāĻ°) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ā§āĻŸ 9.0.0 āĻāĻ° āĻ°āĻŋāĻ˛āĻŋāĻœ, āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ RESTful API āĻ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…ā§āĻ¯āĻžāĻĄ-āĻ…āĻ¨

āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡:

  • āĻĒāĻžāĻ°ā§āĻŸāĻŋāĻļāĻ¨ āĻ•āĻ°āĻž āĻŸā§‡āĻŦāĻŋāĻ˛āĻ—ā§āĻ˛āĻŋ āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ¸ā§āĻ•āĻŋāĻŽāĻž āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯āĻž āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻŸā§‡āĻŦāĻŋāĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻĒāĻ•ā§āĻˇā§‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¤ā§‡ UPSERT āĻāĻŦāĻ‚ INSERT āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻŽā§āĻŦā§‡āĻĄ āĻ•āĻ°āĻž, OPTIONS āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹ āĻāĻŦāĻ‚ OpenAPI āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤
  • RPC POST āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻžāĻŽāĻšā§€āĻ¨ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¸āĻš āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
  • āĻāĻŸāĻŋ "āĻĒāĻ›āĻ¨ā§āĻĻ: params=āĻāĻ•āĻ•-āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ" āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻ›āĻžāĻĄāĻŧāĻž āĻāĻ•āĻŸāĻŋ JSON āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻ¸āĻš āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
  • āĻāĻŸāĻŋ "āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ-āĻŸāĻžāĻ‡āĻĒ: āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨/āĻ…āĻ•ā§āĻŸā§‡āĻŸ-āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ" āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻŸāĻžāĻ‡āĻĒ āĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤
  • "āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āĻŸ-āĻŸāĻžāĻ‡āĻĒ: āĻŸā§‡āĻ•ā§āĻ¸āĻŸ/āĻĒā§āĻ˛ā§‡āĻ‡āĻ¨" āĻ¸āĻš āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡ āĻĒāĻžāĻ ā§āĻ¯ āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • āĻĻā§āĻŦā§ˆāĻ¤ āĻŦāĻ¨ā§āĻ§āĻ¨ā§€āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ…āĻ•ā§āĻˇāĻ° āĻĒāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, "?col=in.("Double\"quote"), ?col=in.("Back\\slash")"āĨ¤
  • āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° (“/projects?select=*,clients!inner(*)&clients.id=eq.12”-āĻāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻĨāĻŽ-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • "is" āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° "āĻ…āĻœāĻžāĻ¨āĻž" āĻŽāĻžāĻ¨āĻŸāĻŋāĻ•ā§‡ āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤
  • PostgreSQL 14-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻ¤āĻž āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ PostgreSQL 9.5-āĻāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ‰āĻ¤ā§āĻ¸: opennet.ru

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨