Как заставить php использовать `application / json` без использования явной команды?

Мы хотим создать какой-то API, где результаты в формате JSON генерируются с помощью .php файлы.

Веб-папка выглядит так

api
├── .htaccess
└── foo
├── bar.php
└── baz.php

куда bar.php а также baz.php php-файлы, генерирующие ответы на запросы в формате json

Такие файлы (bar.php) выглядит как:

<?php
include_once("../../utils.php");

$id = $_GET['id'];

echo json_encode(some_function($id));
?>

Конечно, нужно указать заголовок header("Content-type: application/json");, Однако мы хотим установить .htaccess сделать это так, чтобы никто никогда не забывал устанавливать тип контента, чтобы при необходимости дополнительных заголовков мы могли легко это изменить и т. д. Мы не хотим писать header(...) в каждом файле.

.htaccess выглядит как:

#All php files return JSON formatted text.
AddType application/json json php

Но сгенерированный результат все еще имеет тип mime: text/html,

Что может вызвать это?

0

Решение

PHP имеет некоторые значения, в том числе default_mimetype. Когда сервер Apache генерирует .php страница, он сначала устанавливает application/json mime-type, но при запуске движка PHP заголовок изменяется обратно на text/html, Вы можете установить это, добавив дополнительное правило к .htaccess:

#All php files return JSON formatted text.
AddType application/json json php
php_value default_mimetype application/json
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]