Заголовок Apache Content-Type, определенный поставщиком, тип / json - PullRequest
2 голосов
/ 18 ноября 2011

Я совершенно запутался в зависимости от поставщика контента. Скажите по умолчанию,

Content-Type: application/json

но с конкретным типом поставщика, я могу иметь это

Content-Type: application/vnd.anything.process-v1+json

Нужно ли мне использовать какую-либо специальную функцию в PHP, если бы я проверял, не является ли Content-Type не зависящим от поставщика?

Спасибо.

1 Ответ

1 голос
/ 18 марта 2012

Если вы принимаете контент через HTTP POST от клиента, вы можете проверить тип контента с помощью $ _SERVER ['CONTENT_TYPE'].Я бы посоветовал вам использовать атрибут @ver в заголовке Content-Type вместо встраивания в имя типа контента вашего поставщика.Пример:

Content-Type: application/vnd.anything.process+json;ver=1

Если вы отправляете контент на сервер через HTTP POST, вам нужно указать заголовок accept, чтобы сообщить клиенту о возврате данных в типе контента, специфичном для поставщика.Примерно так будет работать:

header('Accept: application/vnd.anything.process+json;ver=1');

Принимать заголовки может быть довольно сложно.Если вы не контролируете сервер, который вы публикуете в качестве клиента, вы должны предоставить разумное значение по умолчанию для вашего заголовка Accept.Что-то вроде этого более удобно, если вы хотите, чтобы сервер отправлял обратно простой JSON, если он не понимает заголовок поставщика:

header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.1');

Самые разрешающие заголовки Accept принимают все что угодно:

header('Accept: application/vnd.anything.process+json;ver=1;q=0.9, application/json;q=0.5, */*;q=0.1');

Вот фактический RFC для заголовков Accept: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...