Files
progcode/web/public/assets/editorial/2021/api-versioning-compatibility-2021.svg
T
huncode 8e078b92ea
Build and deploy / deploy (push) Successful in 14s
revise September 2021 API versioning articles
2026-07-31 13:06:48 +03:00

54 lines
4.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 375 680" role="img" aria-labelledby="title desc">
<title id="title">Матрица совместимости двух клиентов API</title>
<desc id="desc">В левой части response проверки для v1 и v2, в правой request проверки для current service. Additive поле проходит, удаление обязательного поля и смена семантики отклоняются.</desc>
<rect width="375" height="680" fill="#111827" rx="20"/>
<text x="25" y="40" fill="#f9fafb" font-family="Arial, sans-serif" font-size="18" font-weight="700">Совместимость API: reader и поток</text>
<text x="25" y="63" fill="#9ca3af" font-family="Arial, sans-serif" font-size="11">Schema описывает форму; test проверяет ожидаемое поведение.</text>
<rect x="22" y="90" width="331" height="38" rx="8" fill="#1f2937"/>
<text x="37" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="13" font-weight="700">response → client</text>
<text x="225" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">v1</text>
<text x="290" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">v2</text>
<text x="37" y="159" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">+ optional deliveryWindow</text>
<rect x="211" y="140" width="50" height="31" rx="7" fill="#065f46"/>
<text x="222" y="160" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">PASS</text>
<rect x="278" y="140" width="50" height="31" rx="7" fill="#065f46"/>
<text x="289" y="160" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">PASS</text>
<text x="37" y="205" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">− required totalMinor</text>
<rect x="211" y="186" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="222" y="206" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<rect x="278" y="186" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="289" y="206" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<text x="37" y="251" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">status changed semantics</text>
<rect x="211" y="232" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="222" y="252" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<rect x="278" y="232" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="289" y="252" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<line x1="25" y1="290" x2="350" y2="290" stroke="#374151"/>
<rect x="22" y="315" width="331" height="38" rx="8" fill="#1f2937"/>
<text x="37" y="340" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="13" font-weight="700">request → current service</text>
<text x="255" y="340" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">result</text>
<text x="37" y="384" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">v1: confirmationCode</text>
<rect x="250" y="365" width="78" height="31" rx="7" fill="#065f46"/>
<text x="268" y="385" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">ACCEPT</text>
<text x="37" y="430" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">v2: + deliveryPreference</text>
<rect x="250" y="411" width="78" height="31" rx="7" fill="#065f46"/>
<text x="268" y="431" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">ACCEPT</text>
<text x="37" y="476" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">typo: deliveryPrefrence</text>
<rect x="250" y="457" width="78" height="31" rx="7" fill="#7f1d1d"/>
<text x="267" y="477" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">REJECT</text>
<rect x="25" y="532" width="325" height="112" rx="10" fill="#172554" stroke="#3b82f6"/>
<text x="42" y="559" fill="#dbeafe" font-family="Arial, sans-serif" font-size="12" font-weight="700">Вывод для rollout</text>
<text x="42" y="584" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">1. Новый response проверяет старый reader.</text>
<text x="42" y="604" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">2. Новый request проверяет current service.</text>
<text x="42" y="624" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">3. STOP удерживает legacy contract до migration.</text>
</svg>