C++ āĻ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸āĨ¤ āĻ•āĻ˛ā§āĻĒāĻ•āĻžāĻšāĻŋāĻ¨ā§€ āĻ¨āĻžāĻ•āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻ¤āĻž?

C++ āĻ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸āĨ¤ āĻ•āĻ˛ā§āĻĒāĻ•āĻžāĻšāĻŋāĻ¨ā§€ āĻ¨āĻžāĻ•āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻ¤āĻž?

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ†āĻŽāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ (āĻ•ā§āĻ•āĻŋāĻ•āĻžāĻŸāĻžāĻ°) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°/āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻāĻŦāĻ‚ āĻ•ā§‹āĻ¨āĻžāĻ¨ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ C++ āĻ āĻāĻ•āĻŸāĻŋ REST API āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§‡āĻ›āĻŋ āĻ¸ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻšā§āĻ¯āĻžāĻ•āĻžāĻĨāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¯ā§‡āĻŸāĻŋāĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻ•ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‰āĻ ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¯āĻž āĻ•āĻŋāĻ›ā§ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¸āĻŦāĻ‡ āĻ†āĻŽāĻžāĻ° āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻ° āĻ˛ā§‡āĻ–āĻž āĻ•āĻŽāĻ°ā§‡āĻĄ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻžāĻ° āĻ¸āĻšāĻ•āĻ°ā§āĻŽā§€ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻ•āĻœāĻ¨ āĻŦāĻŋāĻļā§‡āĻˇāĻœā§āĻž āĻ›āĻŋāĻ˛ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻĒā§‡āĻļāĻžāĻĻāĻžāĻ°āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨, āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ āĻāĻŽāĻŦā§‡āĻĄā§‡āĻĄ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻ›āĻŋāĻ˛āĻžāĻŽ āĻāĻŦāĻ‚ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻŦāĻ‚ āĻ­āĻ¯āĻŧāĻ™ā§āĻ•āĻ° C++ āĻ āĻ˛āĻŋāĻ–āĻ¤āĻžāĻŽ, āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āĻ¯āĻžāĻ˛āĻ¯āĻŧā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋāĨ¤

āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚, āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ‰āĻšā§āĻš-āĻ˛ā§‹āĻĄ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ˛ā§‡āĻ–āĻžāĻ° āĻ•āĻžāĻœāĻŸāĻŋāĻ° āĻŽā§āĻ–ā§‹āĻŽā§āĻ–āĻŋ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻžāĻœ āĻ›āĻŋāĻ˛ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ†āĻ¸āĻž āĻĄā§‡āĻŸāĻžāĻ•ā§‡ āĻĒā§āĻ°āĻŋāĻĒā§āĻ°āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ˛ā§‡āĻ–āĻžāĨ¤ āĻāĻŦāĻ‚ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ§ā§‹āĻāĻ¯āĻŧāĻž āĻŦāĻŋāĻ°āĻ¤āĻŋāĻ° āĻĒāĻ°ā§‡, āĻāĻ•āĻœāĻ¨ āĻŦāĻ¨ā§āĻ§ā§ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¯ā§‡ āĻ†āĻŽāĻŋ, āĻāĻ•āĻœāĻ¨ C++ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻĒā§‡āĻļāĻžāĻĻāĻžāĻ°āĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋ āĻ˛āĻŋāĻ–āĻŋāĨ¤ āĻāĻ‡ āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻšāĻ˛ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻ°, āĻ†āĻ°āĻ“ āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻļā§€āĻ˛ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ†āĻŽāĻ°āĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĻāĻ˛ā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻœāĻžāĻ¨āĻŋ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻœā§āĻ°āĻŋāĻ°āĻž āĻ†āĻ¨āĻ¨ā§āĻĻāĻŋāĻ¤ āĻšāĻŦā§‡āĨ¤ āĻ¯āĻžāĻ° āĻ‰āĻ¤ā§āĻ¤āĻ°ā§‡ āĻ†āĻŽāĻŋ āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻ†āĻŽāĻŋ C++ āĻ¤ā§‡ āĻāĻŽāĻ¨ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻŋāĻ¨āĻŋ āĻāĻŦāĻ‚ āĻŦāĻžāĻ•āĻŋ 20+ āĻ˜āĻ¨ā§āĻŸāĻž āĻ¸āĻšāĻœā§‡ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨, āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ āĻāĻŦāĻ‚ āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ¸āĻšāĻœ āĻ•āĻĨāĻžāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻšāĻŋāĻ•ā§‡āĻ¨ āĻ†āĻ‰āĻŸ. āĻāĻŸāĻŋāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻļāĻžāĻ¨ā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ‡āĻĨāĻ¨ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤

āĻāĻ–āĻ¨, āĻœā§‹āĻ°āĻĒā§‚āĻ°ā§āĻŦāĻ• āĻ¸ā§āĻŦ-āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āĻ¨āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻ¸āĻŋ++ āĻ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ āĻĒā§āĻ°āĻĨāĻŽ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ āĻ—ā§āĻ°āĻ¨ā§āĻĨāĻžāĻ—āĻžāĻ°ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ†āĻŽāĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻ āĻĒāĻĄāĻŧā§‡ āĻ—ā§‡āĻ˛ Poco, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ-āĻ“āĻ°āĻŋāĻ¯āĻŧā§‡āĻ¨ā§āĻŸā§‡āĻĄ āĻļā§ˆāĻ˛ā§€āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡āĻ° āĻ—āĻ°ā§āĻŦāĻ“ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ‰āĻ ā§‡āĻ›ā§‡āĨ¤ āĻāĻ‡ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ†āĻŽāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ­āĻŋāĻœā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛ āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“, āĻ†āĻ‡āĻāĻ†āĻ° āĻāĻŦāĻ‚ āĻŦā§‡āĻ¯āĻŧāĻžāĻ° āĻŽā§‡āĻ•āĻĢāĻžāĻ‡āĻ˛ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻāĻŦāĻ‚ āĻāĻ‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ•ā§‹āĻ¨āĻ“āĻŸāĻŋāĻ‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ†āĻŦā§‡āĻĻāĻ¨ āĻ•āĻ°ā§‡āĻ¨āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻĒā§āĻ°ā§‹ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĄāĻ•āĻžāĻ° āĻ•āĻ¨ā§āĻŸā§‡āĻ‡āĻ¨āĻžāĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻŋ cmake āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›ā§‡ Conan. āĻāĻ‡ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻžāĻ° āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›ā§‡

conanfile.txt
[āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨] poco/1.9.3
libpq/11.5

[āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸāĻ°] cmake

āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§‡ "conan install āĻ•āĻ°ā§āĻ¨āĨ¤" āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡āĻ‡, āĻāĻŸāĻŋāĻ¤ā§‡āĻ“ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻž āĻĻāĻ°āĻ•āĻžāĻ° āĻ›āĻŋāĻ˛

CMakeLists.txt

include(build/conanbuildinfo.cmake)
conan_basic_setup()
target_link_libraries(<target_name> ${CONAN_LIBS})

āĻāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻŋ PostgreSQL āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ–ā§āĻāĻœāĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻāĻŸāĻŋ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ›āĻŋāĻ˛ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻ•āĻŽ āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻžāĻ‡āĻĨāĻ¨ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ•āĻŋ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨? āĻāĻŸāĻž POCO āĻ¤ā§‡! āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻ¨āĻžāĻ¨ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻāĻŸāĻŋ POCO-āĻ¤ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¨āĻž; āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ POCO āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋ)āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ–ā§āĻāĻœāĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ¤ā§‡ āĻĒāĻĄāĻŧā§‡āĻ›āĻŋāĻ˛ libpg. āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ…āĻŦāĻŋāĻļā§āĻŦāĻžāĻ¸ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻžāĻ¨ āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻāĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻžāĻ¨ā§‡ āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡āĨ¤

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĒāĻĻāĻ•ā§āĻˇā§‡āĻĒāĻŸāĻŋ āĻ›āĻŋāĻ˛ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻ˛ā§‡āĻ–āĻž āĻ¯āĻž āĻ…āĻ¨ā§āĻ°ā§‹āĻ§āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤
āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻŦāĻļā§āĻ¯āĻ‡ Poco::Util::ServerApplication āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° TemplateServerApp āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻ•āĻžāĻ°ā§€ āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻŽā§‚āĻ˛ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ•ā§‡ āĻ“āĻ­āĻžāĻ°āĻ°āĻžāĻ‡āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ…ā§āĻ¯āĻžāĻĒ

#pragma once

#include <string>
#include <vector>
#include <Poco/Util/ServerApplication.h>

class TemplateServerApp : public Poco::Util::ServerApplication
{
    protected:
        int main(const std::vector<std::string> &);
};

int TemplateServerApp::main(const vector<string> &)
{
    HTTPServerParams* pParams = new HTTPServerParams;

    pParams->setMaxQueued(100);
    pParams->setMaxThreads(16);

    HTTPServer s(new TemplateRequestHandlerFactory, ServerSocket(8000), pParams);

    s.start();
    cerr << "Server started" << endl;

    waitForTerminationRequest();  // wait for CTRL-C or kill

    cerr << "Shutting down..." << endl;
    s.stop();

    return Application::EXIT_OK;
}

āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡: āĻĒā§‹āĻ°ā§āĻŸ, āĻĨā§āĻ°ā§‡āĻĄā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°āĻŋāĻ° āĻ†āĻ•āĻžāĻ°āĨ¤ āĻāĻŦāĻ‚ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āĻ†āĻ—āĻ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻ•āĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ°āĻ–āĻžāĻ¨āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ

TemplateRequestHandler Factory

class TemplateRequestHandlerFactory : public HTTPRequestHandlerFactory
{
public:
    virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest & request)
    {
        return new TemplateServerAppHandler;
    }
};

āĻ†āĻŽāĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻāĻ•āĻ‡ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡ - TemplateServerAppHandlerāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡āĻ‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻ¸āĻžāĻ° āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ°āĻžāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

TemplateServerAppHandler

class TemplateServerAppHandler : public HTTPRequestHandler
{
public:
    void handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp)
    {
        URI uri(req.getURI());
        string method = req.getMethod();

        cerr << "URI: " << uri.toString() << endl;
        cerr << "Method: " << req.getMethod() << endl;

        StringTokenizer tokenizer(uri.getPath(), "/", StringTokenizer::TOK_TRIM);
        HTMLForm form(req,req.stream());

        if(!method.compare("POST"))
        {
            cerr << "POST" << endl;
        }
        else if(!method.compare("PUT"))
        {
            cerr << "PUT" << endl;
        }
        else if(!method.compare("DELETE"))
        {
            cerr << "DELETE" << endl;
        }

        resp.setStatus(HTTPResponse::HTTP_OK);
        resp.setContentType("application/json");
        ostream& out = resp.send();

        out << "{"hello":"heh"}" << endl;
        out.flush();
    }
};

PostgreSQL āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸāĻ“ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ¸āĻšāĻœ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ, āĻāĻ•āĻŸāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ†āĻ›ā§‡ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻŸ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛(). āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻĒā§āĻ°āĻļā§āĻ¨ āĻŦāĻž āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻĒā§‡āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻĒāĻžāĻ¨() āĻāĻŦāĻ‚ libpg API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤ (āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻĒāĻ°ā§‡ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻŦ)āĨ¤

āĻĄā§‡āĻŸāĻžāĻŦā§‡āĻ¸

#pragma once

#include <memory>
#include <mutex>
#include <libpq-fe.h>

class Database
{
public:
    Database();
    std::shared_ptr<PGconn> GetConnection() const;
    bool ExecuteSQL(const std::string& sql);

private:
    void establish_connection();
    void LoadEnvVariables();

    std::string m_dbhost;
    int         m_dbport;
    std::string m_dbname;
    std::string m_dbuser;
    std::string m_dbpass;

    std::shared_ptr<PGconn>  m_connection;
};

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ .env āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡

.env

DATABASE_NAME=template
DATABASE_USER=user
DATABASE_PASSWORD=password
DATABASE_HOST=postgres
DATABASE_PORT=5432

āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŦ āĻ•ā§‹āĻĄ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ github

C++ āĻ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸āĨ¤ āĻ•āĻ˛ā§āĻĒāĻ•āĻžāĻšāĻŋāĻ¨ā§€ āĻ¨āĻžāĻ•āĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻ¤āĻž?

āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ dockerfile āĻāĻŦāĻ‚ docker-compose.yml āĻ˛ā§‡āĻ–āĻžāĻ° āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ†āĻ¸ā§‡āĨ¤ āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻŦāĻ˛āĻ¤ā§‡, āĻāĻŸāĻŋ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§‡āĻ¯āĻŧ, āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻŽāĻŋ āĻāĻ•āĻœāĻ¨ āĻ¨ā§‚āĻŦ āĻŦāĻ˛ā§‡āĻ‡ āĻ¨āĻ¯āĻŧ, āĻ•āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻžāĻ¨āĻ¨ā§‡āĻ° āĻ•ā§āĻˇāĻ¤āĻŋāĻ° āĻ•āĻžāĻ°āĻŖā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ•āĻ¨āĻžāĻ¨ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ, āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¨āĻŋāĻ°ā§āĻ­āĻ°āĻ¤āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, "conan install" āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋ āĻ¯āĻĨā§‡āĻˇā§āĻŸ āĻ¨āĻ¯āĻŧ, āĻāĻŸāĻŋāĻ•ā§‡ -s compiler.libcxx=libstdc++11 āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻ“ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ†āĻŦā§‡āĻĻāĻ¨ā§‡āĻ° āĻ˛āĻŋāĻ™ā§āĻ• āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ•āĻ—ā§āĻšā§āĻ› āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻā§āĻāĻ•āĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻ•āĻ¯āĻŧā§‡āĻ• āĻ˜āĻ¨ā§āĻŸāĻž āĻ§āĻ°ā§‡ āĻāĻ‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŸāĻ•ā§‡ āĻ†āĻ›āĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ†āĻļāĻž āĻ•āĻ°āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻ˛ā§‹āĻ•ā§‡āĻĻā§‡āĻ°āĻ•ā§‡ āĻ•āĻŽ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ¤āĻž āĻ•āĻ°āĻŦā§‡ā§ˇ

āĻāĻ°āĻĒāĻ°, docker-compose.yml āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒāĻ°, āĻ†āĻŽāĻžāĻ° āĻŦāĻ¨ā§āĻ§ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļā§‡, āĻ†āĻŽāĻŋ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›āĻŋ āĻŽāĻŋāĻˇā§āĻŸāĻŋ āĻŦāĻŋāĻ¸ā§āĻ•āĻŋāĻŸ āĻ•āĻžāĻŸāĻžāĻ° āĻ¯āĻ¨ā§āĻ¤ā§āĻ° āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ C++-āĻ āĻāĻ•āĻŸāĻŋ REST API āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻ¸ā§āĻŸāĻŽāĻžāĻ‡āĻœāĻĄ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸āĻš, āĻāĻŦāĻ‚ PostgreSQL āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž, āĻ•ā§‡āĻŦāĻ˛ āĻ•āĻ¨āĻ¸ā§‹āĻ˛ā§‡ "āĻ•ā§āĻ•āĻŋāĻ•āĻžāĻŸāĻžāĻ°" āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°ā§‡ https://github.com/KovalevVasiliy/cpp_rest_api_template.git" āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° "āĻĄāĻ•āĻžāĻ°-āĻ•āĻŽā§āĻĒā§‹āĻœ āĻ†āĻĒ -āĻŦāĻŋāĻ˛ā§āĻĄ"āĨ¤

āĻ†āĻŽāĻŋ āĻ†āĻļāĻž āĻ•āĻ°āĻŋ āĻāĻ‡ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸāĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨āĻĻā§‡āĻ°āĻ•ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻŦāĻ‚ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ C++ āĻāĻ° āĻŽāĻ¤ā§‹ āĻ†āĻ¨āĻžāĻĄāĻŧāĻŋ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ REST API āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻ•āĻ āĻŋāĻ¨ āĻĒāĻĨā§‡ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻ•āĻ°āĻŦā§‡āĨ¤
āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻ†āĻŽāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°āĻ›āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻāĻŸāĻŋ āĻ†āĻ°āĻ“ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ POCO āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° REST API āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

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