ΠΡ βΒ ΠΊΡΡΠΆΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ±ΡΡ ΠΊΠΎΡΠΈΠΊΠΎΠ². Π§ΡΠΎΠ±Ρ Π΄Π΅ΡΠ΅Π²Π»Π΅ Π·Π°ΠΊΡΠΏΠ°ΡΡ ΠΊΠΎΡΠΌ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΠΈΡΠΎΠΌΡΠ΅Π², ΠΌΡ Π°ΡΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΊΠ»Π°Π΄, ΠΈ ΠΎΠΏΡΠΎΠΌ Π²ΠΎΠ·ΠΈΠΌ ΡΡΠ΄Π° ΠΊΠΎΡΠΌ ΠΈΠ· ΠΠΈΡΠ°Ρ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΡΠ°ΡΡΡΡ, ΠΌΡ Π½Π°ΠΊΠΎΠ΄ΠΈΠ»ΠΈ ΡΠ΅Π±Π΅ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ βΒ ΡΠ΅ΡΠ²ΠΈΡ ΡΠΊΠ»Π°Π΄Π°.
ΠΡ ΠΎΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΠΊΡΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠΎΠ»ΠΎΠ΄ΠΎΡΡΠΈ ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½. ΠΠ°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΡΠ΅ΠΌΡ ΡΠΊΠ»Π°Π΄Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ Π½ΠΈΠΌ.
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅:
- ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ id, Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΉ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π’ΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎ
POST api/user.
- ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°.
- ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΠΎΠ²Π°ΡΠΎΠ² ΡΠΎ ΡΠΊΠ»Π°Π΄Π°. Π’.Π΅. ΠΏΠΎ
GET /api/itemsΠ½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π° ΡΠΊΠ»Π°Π΄Π΅. - checkout flow (ΠΏΠΎΠΊΡΠΏΠΊΠ°). ΠΠΎΠΊΡΠΏΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΠΏΠΎ Π²ΡΠ·ΠΎΠ²Ρ
/api/checkoutΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ° ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ item ids, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°ΠΆΡΡΡΡ Π² ΠΏΠΎΠΊΡΠΏΠΊΠ΅ + id ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. - ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ checkout Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ items Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅. Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°Π» 1+ item.
- Π Π°Π±ΠΎΡΠ° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΊΠ»Π°Π΄Π°. Π’.Π΅. Π΅ΡΠ»ΠΈ ΡΠΊΠ»Π°Π΄ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ - ΠΌΠ°Π³Π°Π·ΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΊΠ°Π·Ρ
- Payment flow
- ΠΠ»Ρ ΠΎΠΏΠ»Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°ΡΡ Π΄Π²Π΅ Π²Π΅ΡΠΈ: user id + ΡΠ΅Π½Π° ΠΎΡΠ΄Π΅ΡΠ° ΠΈΠ· checkout.
- ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΉ Π½Π΅ Π½ΡΠΆΠ½ΠΎ - Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΎΠΏΠ»Π°ΡΠ° Π΄Π»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΠ»Π°.
- ΠΠΏΠ»Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π° ΠΎΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, Ρ.Π΅. ΠΏΡΠΈ ΡΠΏΠ°Π²ΡΠ΅ΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ - ΠΎΠΏΠ»Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΏΡΠΈ ΡΠΏΠ°Π²ΡΠ΅ΠΉ ΠΎΠΏΠ»Π°ΡΠ΅ - checkout ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
- ΠΠΈΠΊΠ°ΠΊΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ
- Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠΈΠ³ΠΈΠΈ:
- ruby + Π»ΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈΡΠ°Π΅ΡΠ΅ Π½ΡΠΆΠ½ΡΠΌΠΈ. ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°
- message broker: ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΆΠ΅ ΡΠ»Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΈΠ· inventory ΡΠ΅ΡΠ²ΠΈΡΠ° - Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠ±ΡΠ°ΡΡ Π»ΡΠ±ΡΡ ΠΈΠ· ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½ΡΠΏΠΎΡΡ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ.
- ΠΠ°Π³Π°Π·ΠΈΠ½ + ΠΎΠΏΠ»Π°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠΊΡΡΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ
- ΠΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ Π² ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΌ ΡΠΎΡΠΊΠ΅.
- ΠΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
- ΠΠΎΠΏΡΠ°Π²ΡΡΠ΅ Π½Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Ρ ΡΠ΅Π½Π°ΠΌΠΈ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΊΠΎΠΏΠ΅ΠΉΠΊΠ°Ρ .
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ Π±ΠΎΠ»ΡΡΠ΅ 3 ΡΠ°ΡΠΎΠ² ΡΠΈΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ 3 ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠ° ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΎΠ²Π°ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΡΠΎΠ²Π°ΡΠ° ΠΏΠΎ id. Π ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ²Π°ΡΠ° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
cd inventory-serivce
bundle
bundle exec rackup
GET /api/items- Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ items ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π½Π° ΡΠΊΠ»Π°Π΄Π΅POST /api/item- Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Π°ΠΉΡΠ΅ΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅- ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
{ "item": { "name": String, "price": Int } } - ΠΏΡΠΈΠΌΠ΅Ρ body:
{ "item": { "name": "New item", "price": 4000 } }
- ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
PUT /api/items/:id/toggle_status- ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠ°ΡΡΡ Π°ΠΉΡΠ΅ΠΌΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρok