Файлы конфигурации приложения [закрыто]

Реализация по умолчанию OAuthAuthorizationServerHandler допускает только кодировку формы (т.е. application/x-www-form-urlencoded), а не кодировку JSON (application/JSON).

Ваш запрос ContentType должен быть application/x-www-form-urlencoded и передавать данные в теле как:

grant_type=password&username=Alice&password=password123

т.е. не в формате JSON.

Приведенный выше пример chrome работает, поскольку он не передает данные как JSON. Вам нужно только это для получения токена; для других методов вашего API вы можете использовать JSON.

Эта проблема также обсуждается здесь .

37
задан ninesided 14 December 2015 в 10:59
поделиться

14 ответов

XML XML XML XML. Мы говорим файлы конфигурации здесь . Нет никакого "налога угловой скобки", если Вы не сериализируете объекты в интенсивной производительностью ситуации.

Файлы конфигурации должны быть человекочитаемыми и человеческие понятный, в дополнение к машиночитаемому. XML является хорошим компромиссом между двумя.

, Если Ваш магазин имеет людей, которые боятся той новомодной технологии XML, я плохо себя чувствую для Вас.

10
ответ дан Will 14 December 2015 в 10:59
поделиться

На какой платформе вы работаете? Я бы порекомендовал использовать для этого предпочтительный / общий метод.

  1. MacOSX - списки
  2. Win32 - реестр (или здесь есть новый, давно я его разработал)
  3. Linux / Unix - ~ / .apprc (имя -значение возможно)
-3
ответ дан epatel 14 December 2015 в 10:59
поделиться

Может быть, это немного касательно, но я считаю, что файл конфигурации должен быть прочитан в словарь / хэш-таблицу значений ключей при первом запуске приложения и с этого момента всегда вызываться через этот объект для скорости. Обычно таблица ключ / значение начинается как строка за строкой, но вспомогательные функции в объекте делают такие вещи, как DateTime GetConfigDate (string key) и т. Д.

0
ответ дан 14 December 2015 в 10:59
поделиться

Насколько я знаю, реестр Windows больше не является предпочтительным способом хранения конфигурации, если вы используете .NET - большинство приложений теперь используют System.Configuration [1, 2]. Поскольку это также основано на XML, кажется, что все движется в направлении использования XML для конфигурации.

Если вы хотите остаться кроссплатформенным, я бы сказал, что использование какого-либо текстового файла было бы лучшим путем. Что касается форматирования указанного файла, вы можете принять во внимание, будет ли человек манипулировать им или нет. XML кажется более дружественным к ручным манипуляциям, чем файлы INI из-за видимой структуры файла.

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

[1] Пространство имен System.Configuration - http://msdn.microsoft.com/en-us/library/system.configuration.aspx

[2] Использование конфигурации приложения Файлы в .NET - http://www.developer.com/net/net/article.php/3396111

0
ответ дан rjzii 14 December 2015 в 10:59
поделиться

Мы используем конфигурационные файлы в стиле ini. Мы используем библиотеку Nini для управления ими. Нини делает его очень простым в использовании. Nini изначально был для .NET, но был перенесен на другие платформы с использованием Mono.

2
ответ дан Clint Davis 14 December 2015 в 10:59
поделиться

YAML, по той простой причине, что он делает для очень удобочитаемых файлов конфигурации по сравнению с XML.

XML:

<user id="babooey" on="cpu1">
    <firstname>Bob</firstname>
    <lastname>Abooey</lastname>
    <department>adv</department>
    <cell>555-1212</cell>
    <address password="xxxx">ahunter@example1.com</address>
    <address password="xxxx">babooey@example2.com</address>
</user>

YAML:

    babooey:
        computer : cpu1
        firstname: Bob
        lastname: Abooey
        cell: 555-1212
        addresses:
            - address: babooey@example1.com
              password: xxxx
            - address: babooey@example2.com
              password: xxxx

Примеры были взяты с этой страницы: http://www.kuro5hin.org/story/2004/ 10/29/14225/062

28
ответ дан engtech 14 December 2015 в 10:59
поделиться

конфигурация @Guy

Но приложения является не всегда просто парами ключ/значение. Посмотрите на что-то как конфигурация кота для того, на каких портах она слушает. Вот пример:

    <Connector port="80" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true" />


    <Connector port="8009" 
           enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

у Вас может быть любое количество коннекторов. Определите больше в файле, и существует больше коннекторов. Не определяйте больше, и ничто больше не существует. Нет никакого хорошего пути (по моему скромному мнению), чтобы сделать это с простыми парами ключ/значение.

, Если конфигурация Вашего приложения проста, то что-то простое как файл INI это читается в словарь, прекрасен, вероятно. Но для чего-то более сложного как конфигурация сервера, файл INI был бы огромной болью для поддержания, и что-то более структурное как XML или YAML будет лучше. Все это зависит от проблемного набора.

5
ответ дан Herms 14 December 2015 в 10:59
поделиться

Не запуская новую священную войну, чувства 'налогового сообщения' угловой скобки являются одной областью, где я чрезвычайно не соглашаюсь с Jeff. Нет ничего неправильно с XML, это довольно человекочитаемо (целый YAML или JSON, или файлы INI), но помните, что его намерение состоит в том, чтобы быть считано машинами. Большинство комбинаций языка/платформы идет с каким-то синтаксическим анализатором XML бесплатно, который делает XML довольно хорошим выбором.

кроме того, при использовании хорошего IDE как Visual Studio, и если XML идет со схемой, можно дать схему VS, и волшебно Вы получаете intellisense (можно добраться один для NHibernate, например).

Ulimately необходимо думать о том, как часто Вы собираетесь быть касанием этих файлов однажды в производстве, вероятно, не настолько часто.

Это все еще говорит все это для меня о XML и почему это - все еще допустимый выбор для файлов конфигурации (от Tim Bray ):

, "Если Вы хотите обеспечить данные общего назначения, что получатель мог бы хотеть сделать непредвиденные странные и сумасшедшие вещи с, или если Вы хотите быть действительно параноиками и требовательными в отношении i18n, или если, какая отправка you’re больше похожа на документ, чем структура, или если порядок вопросов данных, или если данные потенциально долговечны (как в, больше, чем секунды) XML, является способом пойти. Мне также кажется, что комбинация XML и XPath поражает зону наилучшего восприятия для форматов данных, которые должны быть расширяемы; то есть it’s, довольно легкий записать код обработки XML, который won’t приводят к сбою в присутствии изменений в формате сообщения, что don’t касаются части, о которой Вы заботитесь".

9
ответ дан Kev 14 December 2015 в 10:59
поделиться

Мы используем файлы свойств, просто потому что Java поддерживает их исходно. Несколько месяцев назад я видел, что Платформа приложений SpringSource использует JSON для конфигурирования их сервера, и это выглядит очень интересным. Я сравненные различные нотации конфигурации и пришли к выводу, что XML, кажется, лучшее соответствие в данный момент. Это имеет хорошую поддержку инструментов и довольно независимо от платформы.

0
ответ дан dlinsin 14 December 2015 в 10:59
поделиться

Ре: комментарий

epatel я думаю исходный вопрос, спрашивал о конфигурации приложения, которую администратор будет делать, не просто храня пользовательские настройки. Предложения, которые Вы дали, кажутся больше для пользователя prefs, чем конфигурация приложения и обычно не являются чем-то, что пользователь когда-либо имел бы дело с непосредственно (приложение должно обеспечить параметры конфигурации в UI, и затем обновить файлы). Я действительно надеюсь, что Вы никогда не делали бы пользователя, должны просматривать/редактировать Реестр.:)

Что касается фактического вопроса, я сказал бы, что XML, вероятно, в порядке, поскольку много людей привыкнет использовать это для конфигурации. Пока Вы организуете значения конфигурации простым в использовании способом тогда, "налог угловой скобки" не должен быть слишком плохим.

0
ответ дан Herms 14 December 2015 в 10:59
поделиться

XML, JSON, INI.
у них всех есть свои достоинства и недостатки.
В контексте приложения, я чувствую, что уровень абстракции является важной вещью.
, Если можно выбрать способ структурировать данные, которые являются хорошим компромиссом между человеческой удобочитаемостью и как Вы хотите получить доступ/абстрагировать к данным в коде, Вы являетесь золотыми.

Мы главным образом используем XML, где я работаю, и я не могу действительно полагать, что конфигурационный файл загрузился в кэш как объекты, когда сначала считанный или после того, как это было записано в, и затем абстрагировало далеко от остальной части программы, действительно не так большая часть хита ни на ЦП, ни на дисковом пространстве.
И это довольно читаемо также, пока Вы структурируете право файла.

И все языки на всех платформах поддерживает XML через некоторые довольно общие библиотеки.

2
ответ дан Lars Mæhlum 14 December 2015 в 10:59
поделиться

@Herms

, Что я действительно имел в виду, должен был придерживаться рекомендуемого способа, которым программное обеспечение должно сохранить значения конфигурации для любой данной платформы.

то, Что Вы часто получаете тогда, является также рекомендуемыми способами, которыми они должен/могут быть измененными. Как меню конфигурации в программе или панель конфигурации в "системе prefs" приложение (для программных обеспечений системных служб т.е.). Не разрешение конечным пользователям изменить их непосредственно через RegEdit или NotePad...

, Почему?

  1. конечные пользователи (=customers) привыкли к своим платформам
  2. , Система для резервных копий может лучше сохранить "безопасные установки" и т.д.

@ninesided

О " выбор библиотеки ", попытайтесь связаться в (статическая ссылка) любая выбранная библиотека для понижения риска вхождения в войну конфликта версий с машинами конечных пользователей.

1
ответ дан epatel 14 December 2015 в 10:59
поделиться

Во-первых: Это - действительно большая проблема дебатов, не быстрый Q+A.

Мой фаворит прямо сейчас должен просто включать Lua, потому что

  • я могу разрешить вещи как width=height* (1+1/3)
  • , я могу сделать пользовательские функции доступными
  • , я могу запретить что-либо еще. (невозможный в, например, Python (включая соленые огурцы.))
  • я, вероятно, захочу язык сценариев где-то в другом месте в проекте так или иначе.

Другая опция, если существует много данных, состоит в том, чтобы использовать sqlite3, потому что они правы к Маленькому заявлению

  • .
  • Быстро.
  • Надежный.

Выбирают любые три.

, К которому я хотел бы добавить:

  • резервные копии являются защелкой. (просто скопируйте файл дб.)
  • легче переключиться на другой дб, ODBC, безотносительно. (чем он из fugly-файла)

, Но снова, это - большая проблема. "Большой" ответ на это, вероятно, включает некоторую матрицу функции или список ситуаций как:

Объем данных или короткое время выполнения

  • Для больших объемов данных, Вы могли бы хотеть эффективное устройство хранения данных, как дб.
  • Для коротких промежутков времени (часто), Вы могли бы хотеть что-то, для чего Вы не должны делать большого парсинга, рассматривать что-то, что может быть mmap:ed в непосредственно.

, Что реализовывает конфигурацию, касаются?

  • Хост:
    • мне нравится YAML в / и т.д., который повторно реализован в окнах?
  • Пользователь:
    • Вы разрешаете пользователям редактировать конфигурацию с текстовым редактором?
    • это должно быть централизованно управляемо? Реестр / gconf / удаленный дб?
    • май пользователь имеют несколько отличающиеся профили ?
  • Проект:
    • Файл (файлы) в каталоге проекта? (Управление версиями обычно следует этой модели...)

, Сложность

  • Является там только несколькими плоскими значениями? Рассмотрите YAML.
  • данные вкладываются, или зависимый в некотором роде? (Это - то, где это становится интересным.)
  • это могла бы быть желательная функция для разрешения некоторой формы сценариев?
  • Шаблоны могут быть просмотрены как своего рода конфигурационные файлы..
14
ответ дан Anders Eurenius 14 December 2015 в 10:59
поделиться

Если ваш файл конфигурации предназначен для однократной записи, только для чтения при загрузке, а ваши данные представляют собой набор пар "имя-значение", лучшим выбором будет тот, который разработчик сможет начать работать первым. .

Если ваши данные немного сложнее, с вложенностью и т.д., вам, вероятно, лучше использовать YAML, XML или SQLite.

Если вам нужны вложенные данные и / или возможность запрашивать данные конфигурации после загрузки, используйте XML или SQLite. Оба имеют довольно хорошие языки запросов (XPATH и SQL) для структурированных / вложенных данных.

Если ваши данные конфигурации сильно нормализованы (например, 5-я нормальная форма), вам лучше использовать SQLite, потому что SQL лучше подходит для работы с сильно нормализованными данными.

Если вы планируете записывать в набор данных конфигурации во время работы программы, то вам лучше использовать SQLite. Например, если вы загружаете данные конфигурации с другого компьютера, или если вы основываете решения о будущем выполнении программы на данных, собранных в ходе предыдущего выполнения программы. SQLite реализует очень надежный механизм хранения данных, который чрезвычайно трудно повредить, когда у вас есть перебои в подаче электроэнергии или программы, которые зависают в несогласованном состоянии из-за ошибок. Коррумпированные данные приводят к высоким расходам на поддержку в полевых условиях, и SQLite будет работать намного лучше, чем любое собственное решение или даже популярные библиотеки на основе XML или YAML.

Посетите мою страницу для получения дополнительной информации о SQLite.

SQLite реализует очень надежный механизм хранения данных, который чрезвычайно трудно повредить, когда у вас есть перебои в подаче электроэнергии или программы, которые зависают в несогласованном состоянии из-за ошибок. Коррумпированные данные приводят к высоким расходам на поддержку в полевых условиях, и SQLite будет работать намного лучше, чем любое собственное решение или даже популярные библиотеки на основе XML или YAML.

Посетите мою страницу для получения дополнительной информации о SQLite.

SQLite реализует очень надежный механизм хранения данных, который чрезвычайно трудно повредить, когда у вас есть перебои в подаче электроэнергии или программы, которые зависают в несогласованном состоянии из-за ошибок. Коррумпированные данные приводят к высоким расходам на поддержку в полевых условиях, и SQLite будет работать намного лучше, чем любое собственное решение или даже популярные библиотеки на основе XML или YAML.

Посетите мою страницу для получения дополнительной информации о SQLite.

1
ответ дан 27 November 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: