Что означает HTTP код ответа 200
Что проверяют
Вопрос простой, поэтому ценится не определение, а то, что вы знаете вокруг него: чем 200 отличается от соседей по классу 2xx и почему «пришёл 200» ещё не значит «всё работает». Следом обычно спрашивают, какой код должен вернуть создающий POST и что вы проверите в ответе, кроме статуса.
Как отвечать
200 OK означает, что сервер успешно обработал запрос. Смысл тела зависит от метода, это закреплено в RFC 9110:
- GET: в теле лежит запрошенный ресурс;
- HEAD: те же заголовки, что у GET, но без тела;
- POST: в теле результат действия, например созданный объект или итог операции;
- PUT, PATCH, DELETE: 200 уместен, если сервер что-то возвращает в теле, иначе правильнее 204.
Рядом стоит назвать соседей: 201 Created при создании ресурса, часто с заголовком Location; 202 Accepted, когда задача принята в очередь, но ещё не выполнена; 204 No Content для успеха без тела; 206 Partial Content для докачки по Range.
Для тестировщика главное: статус проверяется вместе со всем остальным. В API-тесте это схема тела, Content-Type, значения ключевых полей и время ответа. В Postman строка pm.response.to.have.status(200) только первый шаг. Если автотесты пишутся на C#, учтите, что EnsureSuccessStatusCode() у HttpResponseMessage пропускает любой код от 200 до 299: 204 вместо ожидаемого 201 так не поймать, нужно явно сравнивать StatusCode с HttpStatusCode.Created.
Где спотыкаются
Считают, что 200 гарантирует успех. Многие API отвечают 200 с {"error": ...} в теле, GraphQL-серверы обычно возвращают ошибки выполнения в массиве errors при статусе 200. Проверка одного статуса такие баги пропустит.
Не замечают soft 404: одностраничное приложение отдаёт 200 и index.html на любой адрес, а «страница не найдена» рисуется уже скриптом. Для поисковиков и мониторинга такая страница выглядит рабочей.
Путают 200 и 304 в DevTools. Строка «200 (from disk cache)» означает, что браузер вообще не ходил на сервер, а 304 Not Modified значит, что ходил и получил подтверждение, что его копия ещё свежая.