Различия между text/plain и application/json

Вопрос в том, в чем разница между text/plain и application/json. И какой из них лучше использовать или есть ли подходящее применение?

Недавно я получаю метод POST для маршрутов API без установки заголовков в NextJS. И он устанавливает Content-Type заголовка запроса на выборку как text/plain. (похоже, что значение по умолчанию — text/plain)

Обычно я создаю Content-Type заголовка как application/json. И, как вы знаете, даже мы преобразовали реквизиты тела в строку, и они анализировались как формат json в API Routes.

Но с текстовым/обычным заголовком маршруты API не анализируют его.

Как вы думаете, в чем разница между text/plain и application/json?

Enigmativity 11.06.2024 01:29

«Если Content-Type является приложением/json, он анализируется как формат json на маршрутах API; но с текстовым/простым заголовком маршруты API его не анализируют». - кажется, вы уже нашли важную разницу.

Bergi 11.06.2024 01:42
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
2
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Заголовок Content-Type — это подсказка клиента или сервера о том, что будет дальше. Вы можете отправить объект JSON с типом контента text/plain, но это может запутать сервер.

Я уверен, что существуют фреймворки и API, которые просто предполагают, что все входящие данные являются JSON, и не предупреждают вас, но есть также множество других, которые выдают ошибку 415, потому что они ожидают JSON, а вы сказали им, что отправляете text/plain вместо.

text/plain сам по себе является форматом, который по сути представляет собой «любой текстовый формат без структуры» и не так часто используется в Интернете. Если вы сохраните файл с расширением .txt в блокноте, это text/plain.

Я думал, что преобразование в строку реквизита body в формате JSON будет таким же, как и текст. Но правильно ли я понимаю, что text/plain буквально означает текст, а не строковый json? Если это правда, то я могу задать глупый вопрос.

Humanoid Mk.12 11.06.2024 02:10

@HumanoidMk.12 — «Строковый JSON» — это оксюморон. «JSON» по определению является «строковым».

Enigmativity 11.06.2024 02:18

@HumanoidMk.12, чтобы немного рассказать о другом комментаторе. Прежде чем вы «строчите», это не JSON, это обычный объект Javascript. Только после того, как вы превратите его в строку, это будет JSON.

Evert 11.06.2024 20:24

Другие вопросы по теме