Ответ 1
В этом разделе предполагается, что вы имеете в виду: как я могу сообщить пользователю, где найти бинарный ресурс
Разница между URI и URL-адресом не имеет ничего общего с бинарными и недвоичными типами данных (см. Также).
Если вы возвращаетесь в основном в JSON, то url
является обычным способом. Если вы делаете что-то большее, чем HTML/XML-ish, то что-то вроде элемента <link>
с хорошим rel
имеет большой смысл.
Очевидно, что если клиент делает запрос GET
на прямой URL-адрес, который вы им дали, вы должны отправить им файл, если только они не отправили кучу заголовков согласования контента, которые фактически не позволяют вам выполнить свой запрос. В этом случае 406 Not Acceptable
ответ 406 Not Acceptable
(или официальное определение) имеет большой смысл.
Если вы имеете в виду что-то еще по вашему вопросу, пожалуйста, уточните.
Рамблинг "Сделай это как этот" раздел
Во-первых: игнорировать URL-адрес и URI. Это не имеет никакого отношения к этому. Вообще.
Далее: Если ваша проблема не связана с "Как мне привязать к ресурсу" (на который может повлиять материал, который я собираюсь обсудить), но "Что, если мой ресурс - это просто файл PDF", у вас есть все виды варианты его решения. Во-первых, вам нужно отступить и подумать более абстрактно (немного). Ваш ресурс почти наверняка не является "файлом PDF". Это "файл, загруженный пользователем", или "PDF-версия отчета, который я генерирую" и т.д.
В первом случае у вас, вероятно, нет никакого представления ресурса за пределами двоичного файла, который они вам отправили, что совершенно нормально. Вам, вероятно, не потребуется выполнять какие-либо переговоры по контенту, когда вы получаете GET
для URL-адреса этого ресурса. Просто отправьте им файл, с учетом предостережений о 406
о котором я упоминал выше.
Во втором случае у вас могут быть все виды представлений этого ресурса: CSV, HTML, LaTeX, вы называете это. В этом случае, когда вы получаете GET
для URL-адреса ресурса, вам нужно выполнить некоторое согласование контента, чтобы вы знали, отправлять ли его документ PDF или что-то еще. Возможно, у вас может быть JSON-представление ресурса, являющегося просто исходными данными, которые вы используете для создания PDF файла.
В любом случае было бы неожиданным, если бы у вас было представление, которое было строго метаданными о ресурсе. При необходимости (часто это бывает, иногда это не так) явные внешние метаданные (в отличие от метаданных, встроенных в двоичный ресурс, таких как автор и информация о названиях в PDF файлах) чаще всего моделируются как отдельный ресурс.
Наконец, как @monitorjbl говорит: вы, вероятно, не хотите вставлять двоичные данные непосредственно в текстовый формат, такой как JSON или XML. Есть способы сделать это, часто используя слова "base64-encoded", но обычно это не самый лучший подход. В общем, вы не должны смешивать двоичные данные и текстовые данные.