рдЬрд╛рд╡рд╛ / рд╕реНрдкреНрд░рд┐рдВрдЧ: рд╕реНрдкреАрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ CRUD REST API рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреИрд╕реЗ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрд┐рд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг CRUD REST API рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Speedment рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред



рдпрд╣ рд╣рд░ рд╕рд╛рд▓ рддреЗрдЬреА рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдЕрдЧрд▓реЗ рджрд╢рдХ рдХреЗ рдХрд░реАрдм рдЖрддреЗ рд╣реА, рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдореЙрдбреНрдпреВрд▓, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреЛ рдЕрднреА рдПрдХ рдмрдбрд╝рд╛ рдЕрдкрдбреЗрдЯ рдорд┐рд▓рд╛ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ "2.2.0" рдФрд░ 2020 рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд▓рдЧрднрдЧ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕реНрдкреАрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЯреАрдо рдиреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдЕрдВрддрд░ рдХреЛ рднрд░ рджрд┐рдпрд╛ред

рдпрджрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдкреАрдбреАрдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрди рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╕реНрдкреАрдб рдкреНрд▓рдЧ рдЗрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдЖрдзрд╛рд░рд┐рдд рдХреНрд╡реЗрд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдкреАрдб, ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕реНрдкреАрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдЧрддрд┐ рдХреЛ ORM рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛ рд╕рдореБрджрд╛рдп рдХреЗ рдпреЛрдЧреНрдп рд╣реИ - рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓рдХрд┐рдЯ рдЬреЛ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддреЗрдЬреА рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛ рд╕реНрдЯреНрд░реАрдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЧрддрд┐ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдШрд░ рдкрд░ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдПрдкреАрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрддрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЯреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реЗрдХрдВрдб рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдбреЛрдореЗрди рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕реНрдкреАрдбрдореЗрдВрдЯ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдмрд╛рдХреА рднрд╛рдЧ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реЛрдЧрд╛ред

рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ: рд╕рдмрд╕реЗ рддреЗрдЬ рд╢реБрд░реБрдЖрдд


рд╕реНрдкреАрдб рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкреАрдб 3.2.2 рдиреЗ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рд╕реЗ рд╕реАрдзреЗ рдкреВрд░реЗ рд╕реАрдЖрд░рдпреВрдбреА рд░реАрд╕реНрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред

рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ, рдЪрд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдПрдХреАрдХрд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд░рд▓ рд╣реЛрдЧреАред

рдпрджрд┐ рдЖрдк рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреЛ рдореМрдЬреВрджрд╛ рд╕реНрдкреАрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ pom.xml рдкрд░ рдирд┐рдореНрди 2 рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

<plugin> <groupId>com.speedment.enterprise</groupId> <artifactId>speedment-enterprise-maven-plugin</artifactId> <version>${speedment.version}</version> <configuration> <components> component>com.speedment.enterprise.plugins.spring.SpringGeneratorBundle</component> </components> <appName>${project.artifactId}</appName> <packageName>${project.groupId}</packageName> </configuration> ... // Database connector dependency </plugin> <dependencies> ... <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>com.speedment.enterprise.plugins</groupId> <artifactId>spring-runtime</artifactId> <version>${speedment.version}</version> </dependency> ... </dependencies> 

рдЕрдкрдиреЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЗ рдЕрдЧрд▓реЗ рдЙрддреНрдерд╛рди рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдкреНрд░рд┐рдВрдЧ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдмрд┐рди рдкрдВрдЬреАрдХрд░рдг рдЧреБрдгреЛрдВ рдХреЛ рдЧрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдкрд░ рдЬрд╛рдПрдБ , рдЬрд╣рд╛рдБ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреЗрдирд░реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдЪреЗрдХрдмреЙрдХреНрд╕ рдкреНрд▓рдЧ рдЗрди рд╕реЗрдХреНрд╢рди рдореЗрдВ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдкрдХреЛ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред



CRUD рд╕рд░рд▓реАрдХреГрдд


рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкреАрдб рдЯреВрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЕрдкрдиреЗ REST API рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдХрд░ рд╕реНрдкреАрдб рдЯреВрд▓ рдХреЛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 mvn speedment:tool 

рдпрджрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдкреАрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИрд▓реЛ рд╕реНрдкреАрдб рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдкрд╛рд▓рди тАЛтАЛрдХрд░рдХреЗ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реНрдкреАрдб рдЯреВрд▓ REST API рдЬрдирд░реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ CRUD REST API рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреНрд░реА рд╡реНрдпреВ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ тАЬ REST Enable Create / Update / Delete тАЭ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде тАЬ Generate @RestController тАЭ рдЪреЗрдХ рдмреЙрдХреНрд╕ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ ред рдЬрдм рдЖрдк Generate рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ REST рдореИрдкрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рд╡реЗ URL рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП CRUD рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рд╡рд╣ рд╕рдм рд╣реИ! рдореИрдиреБрдЕрд▓ рдХреЛрдбрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рдмрд╕ рдЬреЗрдирд░реЗрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд▓рд╛рдПрдВ:

 mvn spring-boot:run 

REST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдЯрд┐рдЯреА рдмрдирд╛рдирд╛


рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯреВрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рдкрд░ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЗрд╕ рдкрде рдХрд╛ рдирд╛рдо рдЖрдкрдХреЗ рд╕реНрдХреАрдорд╛ рдХреЗ рдирд╛рдо рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк " REST рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ " рдЪреЗрдХрдмреЙрдХреНрд╕ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рдордирдорд╛рдирд╛ рдкрде рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╕реНрдкреАрдб рдЯреВрд▓ рд╕реЗ " REST рдлрд╝реАрд▓реНрдб рдирд╛рдо " рдорд╛рди рдХреБрдВрдЬреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЙрд▓рдо рдЖрдИрдбреА , рдирд╛рдо рдФрд░ рдЙрдореНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рд╣реИ , рддреЛ рд╣рдо рдПрдХ рдирдИ рдЗрдХрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рднреЗрдЬреЗрдВрдЧреЗ:

 POST localhost:8080/db/person { "id": 1, "name": "Jane", "age": 25 } 

рдпрд╛

 curl -d '{"id": 1,"name": "Jane","age": 25}' -H "Content-Type:application/json" -X POST localhost:8080/db/person 

рдпрджрд┐ рдЖрдИрдбреА рдХреЙрд▓рдо рдХрд╛ рдорд╛рди рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ (рдпрд╛ рдЕрдиреБрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЖрдк рдЗрд╕реЗ POST рдирд┐рдХрд╛рдп рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрддрдВрдн рдХреЛ POST рдирд┐рдХрд╛рдп рд╕реЗ рдЬрдмрд░рди рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЯреВрд▓ рдЯреНрд░реА рджреГрд╢реНрдп рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ " Create рдмреЙрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ " рдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп POST рдмреЙрдбреА рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрд▓рдо рдореМрдЬреВрдж рд╣реИ, рддреЛ "рдЖрд╡рд╢реНрдпрдХ рдирд┐рдХрд╛рдп рдмрдирд╛рдПрдВ" рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВред



рдкреБрдирд░реНрдирд┐рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рд╣рдорд╛рд░реА рдирдИ рдмрдирд╛рдИ рдЧрдИ рдЗрдХрд╛рдИ рдХреЛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдПрдХ GET рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрдХрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 GET localhost:8080/db/person 

рдпрд╛

 curl localhost:8080/db/person/1 

рдПрдХ рдкреВрд░реНрдг рдЕрдиреБрд░реЛрдз рд╕рднреА рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ JSON рдПрд░реЗ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░реЗрдЧрд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдПрдХрдорд╛рддреНрд░ рдЗрдХрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рдПрдЧрд╛:

 [ { "id": 1, "name": "Jane", "age": 25 } ] 

рдлрд╝рд┐рд▓реНрдЯрд░ рдФрд░ рд╕реЙрд░реНрдЯрд░реНрд╕ рдЬреИрд╕реА рдЙрдиреНрдирдд рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╕реНрдкреАрдбрдореЗрдВрдЯ рдХреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИрдВред

REST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛


REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдЗрдХрд╛рдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ PATCH рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрде рдХреЛ рдПрдХ рдЗрдХрд╛рдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рдЗрдХрд╛рдИ рдХрд╛ рдХреМрди рд╕рд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЙрд▓рдо рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рдкреАрдХреЗ (рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА) рдХреЙрд▓рдо рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реА рдЗрдХрд╛рдИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдЗрдХрд╛рдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХреЛ рдЪрд▓рд╛рдПрдВрдЧреЗ:

 PATCH localhost:8080/db/person/1 { "name": "Mike", "age": 43 } 

рдпрд╛
 curl -d '{"name": "Jane","age": 25}' -H "Content-Type:application/json" -X PATCH localhost:8080/db/person/1 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рд╕реНрддрдВрдн PATCH рдирд┐рдХрд╛рдп (рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реНрддрдВрдн рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрддрдВрдн рдХреЛ рдЬрдмрд░рди рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЯреВрд▓ рдЯреНрд░реА рджреГрд╢реНрдп рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреЙрд▓рдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ " рдЕрдкрдбреЗрдЯ рдмреЙрдбреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ " рдмреЙрдХреНрд╕ рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рдореМрдЬреВрдж рд╣реИ, рддреЛ " рдЕрдкрдбреЗрдЯ рдмреЙрдбреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ " рдЬрд╛рдВрдЪреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдореЙрдбрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рд░реАрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдЯрд┐рдЯреАрдЬ рдХреЛ рд╣рдЯрд╛рдирд╛


REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЗрдХрд╛рдИ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╣рдо рдЙрд╕реА рддрд░рд╣ рд╕реЗ DELETE рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдФрд░ рдЕрджреНрдпрддрди рдХреА рдЧрдИ рдЗрдХрд╛рдИ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рдХреЛ рдЪрд▓рд╛рдПрдВрдЧреЗ:

 DELETE localhost:8080/db/person/1 

рдпрд╛

 curl -X DELETE localhost:8080/db/person/1 

рд╕рд╛рд░рд╛рдВрд╢


рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╢реБрд░реВ рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдкрд░реЗрд╢рд╛рдиреА рднрд░рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЗрди рдЕрд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕реАрдзреЗ рдЙрддрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдирдИ рд╕реНрдкреАрдб рдмреВрдЯ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде, рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕реАрдзреЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд░реАрд╕реНрдЯ рдирд┐рдпрдВрддреНрд░рдХ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓реЙрдиреНрдЪ рдореЗрдВ рддреЗрдЬреА рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдЖрд╢рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдирдП CRUD рдлреАрдЪрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╢реЙрд░реНрдЯ рдЧрд╛рдЗрдб рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рдЬреЛ рд╕реНрдкреАрдб рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдкреНрд▓рдЧрдЗрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрд░ рдЬрд╛рдПрдВ , рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдирдП рд╕реАрдЖрд░рдпреВрдбреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓реЗрдВрдЧреЗред

рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдврд╝рдиреЗ


REST API рдкрд╛рд░реНрдЯ 4 рдмрдирд╛рдирд╛: POST, PUT рдФрд░ DELETE рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛

рдПрдХ рдореВрд▓ CRUD рд░реЗрд╕реНрдЯрдлреБрд▓ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ MVC рдПрдкреНрд▓реАрдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг: рдЬрд╛рд╡рд╛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛

Source: https://habr.com/ru/post/hi483026/


All Articles