Питання на співбесіді з проєктування API (Middle) з відповідями

75 запитань для співбесіди з теми Проєктування API (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Як змоделювати «скасувати замовлення» в REST API?
  2. 2.Коли зв'язок має бути окремим ресурсом, як-от /users/42/memberships?
  3. 3.Як JSON Merge Patch трактує null?
  4. 4.Як виглядає JSON Patch (RFC 6902)?
  5. 5.Як REST API може дати клієнтам завантажити пов'язані ресурси одним запитом?
  6. 6.Що дає клієнтам вибір полів (sparse fieldsets, ?fields=id,name,email)?
  7. 7.Чому API може використовувати UUID чи непрозорі рядкові ID замість автоінкрементних чисел в URL?
  8. 8.Як API має представляти гроші?
  9. 9.Як повідомляти про помилки валідації кількох полів?
  10. 10.Чому коди помилок у тілі мають бути стабільними й задокументованими?
  11. 11.Який статус для коректно сформованого запиту, що порушує бізнес-правило, як-от «не можна відвантажити неоплачене замовлення»?
  12. 12.Повертати 403 чи 404, коли користувач запитує приватний ресурс іншого користувача?
  13. 13.Чому пагінація зі зміщенням дає дублікати чи пропуски, коли під час гортання додаються елементи?
  14. 14.Чому повертати загальну кількість з кожною сторінкою іноді проблемно?
  15. 15.Що важливо для порядку сортування в курсорній пагінації?
  16. 16.Як API може пропонувати гнучку фільтрацію, не стаючи мовою запитів, яку ніхто не зможе оптимізувати?
  17. 17.Як зазвичай виглядають параметри сортування?
  18. 18.Як ключ ідемпотентності працює на сервері?
  19. 19.Два клієнти редагують той самий документ. Як API може не дати одному тихо перезаписати іншого?
  20. 20.Що економить 304 Not Modified?
  21. 21.Чому повтори небезпечні для неідемпотентних операцій без захисту?
  22. 22.Що означає Cache-Control: private, max-age=60?
  23. 23.Чим відрізняються no-cache і no-store?
  24. 24.Що дозволяє stale-while-revalidate?
  25. 25.Чому заголовок Vary важливий для кешування відповідей API?
  26. 26.Що вважається несумісною зміною в REST API?
  27. 27.Що таке закон Гайрема (Hyrum's Law)?
  28. 28.Які компроміси версіонування в URL (/v2/...) порівняно з версіонуванням у заголовку?
  29. 29.Як змінити формат поля без нової мажорної версії?
  30. 30.Чим автентифікація відрізняється від авторизації в API?
  31. 31.Що описує OWASP API1:2023 Broken Object Level Authorization?
  32. 32.Що таке Broken Object Property Level Authorization (OWASP API3:2023)?
  33. 33.Чому токени доступу мають бути короткоживучими?
  34. 34.Для чого OAuth-скоупи?
  35. 35.Як автентифікувати виклики між сервісами всередині системи?
  36. 36.Чому обмеження частоти варто застосовувати на клієнта (API-ключ чи користувача), а не лише на IP?
  37. 37.Що охоплює OWASP API4:2023 Unrestricted Resource Consumption?
  38. 38.Як добре поводитися клієнту, коли він отримує 429 чи 503?
  39. 39.Як отримувач вебхука має перевірити, що запит справді від провайдера?
  40. 40.Чому обробники вебхуків мають бути ідемпотентними?
  41. 41.Чому ендпоінт вебхука має відповідати швидко й обробляти подію асинхронно?
  42. 42.Чи можна вважати, що події вебхуків приходять по порядку?
  43. 43.Чому HTTP-кешування з GraphQL складніше, ніж з REST?
  44. 44.Чим помилки GraphQL відрізняються від помилок REST?
  45. 45.Як GraphQL зазвичай розвиває схему?
  46. 46.Коли tRPC - добрий вибір?
  47. 47.Що описує AsyncAPI?
  48. 48.Як API має обробляти пакетну операцію, де деякі елементи не вдалися?
  49. 49.Чому великий експорт може бути кращим як асинхронна задача, а не один GET?
  50. 50.Як клієнти можуть завантажувати великі файли, не пропускаючи їх через API-сервер?
  51. 51.Що робить документацію API справді корисною?
  52. 52.Як автоматично ловити несумісні зміни в специфікації OpenAPI?
  53. 53.Що таке контрактні тести між клієнтом і API?
  54. 54.Навіщо генерувати SDK чи клієнти зі специфікації OpenAPI?
  55. 55.Як API має працювати з часовими поясами у вхідних і вихідних даних?
  56. 56.Яка розумна поведінка за замовчуванням для невідомих параметрів запиту?
  57. 57.Чому відповіді зі списками мають мати стабільний порядок за замовчуванням?
  58. 58.Що змінює в дизайні API підхід «Backend for Frontend»?
  59. 59.Що зазвичай робить API-шлюз (gateway)?
  60. 60.Як API має відкривати дії над багатьма елементами, як-от «заархівувати 500 повідомлень»?
  61. 61.Навіщо включати correlation ID у відповіді з помилками?
  62. 62.Чим ризиковано показувати клієнтам API внутрішні повідомлення помилок (наприклад, SQL)?
  63. 63.Коли PUT з повним документом може бути кращим за PATCH?
  64. 64.Чому без документації відповіді API не мають використовувати null для полів «не застосовується» й «невідомо»?
  65. 65.Що таке версіонування через media type?
  66. 66.Про що просить заголовок запиту Prefer: return=minimal?
  67. 67.Чому API не може відповідати Access-Control-Allow-Origin: * на браузерні запити з обліковими даними?
  68. 68.Браузерний SPA автентифікується до свого API через cookies. Який додатковий захист потрібен порівняно з bearer-токенами?
  69. 69.Як провайдер API має зберігати API-ключі, які видає?
  70. 70.Коли POST /orders/search з JSON-тілом прийнятний замість GET з параметрами запиту?
  71. 71.Для чого домовленість /users/me (чи /me)?
  72. 72.Коли API має повертати 410 Gone, а не 404?
  73. 73.Який статус пасує до тіла запиту, більшого за дозволене API?
  74. 74.Чому стабільний operationId в OpenAPI має значення?
  75. 75.Як версіонувати дані вебхуків?