Каковы некоторые подводные камни/советы, которые можно было бы дать для разработки веб-службы

Глядя на разработку веб-сервиса (api) в PHP, чтобы предложить клиентам более простой способ интеграции с нашей платформой. Существуют вызовы рабочих процессов, которые будут проверяться с помощью пользователя/пароля, а также некоторые параметры отчетности.

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

Теперь мне также нужно предложить состояние или статус рабочего процесса, и я думаю, что REST будет лучшим выбором здесь, но все еще ищет мнения об этом.

Для отчетности я хотел бы предложить различные варианты, такие как XML, Excel/CSV, по какой-либо причине я бы выбрал один за другим?

Каковы некоторые подводные камни, которые я должен искать?

Какие драгоценности можно предложить любому.

Спасибо заранее за любую помощь, поскольку это очень важно для меня понять.

ОБНОВЛЕНИЕ # 1:

  • Какой был бы самый безопасный метод?
  • Какой самый гибкий метод (Независимая от платформы)

ОБНОВЛЕНИЕ # 2: немного о потоке данных. У каждого пользователя есть creds для использования API, и никакие данные не распределяются между пользователями. Использование отправляет запрос, запрос обрабатывается и возвращается доход. нет обновлений. (Думайте, Google), выполняется запрос на поиск и приводятся результаты, но в моем случае дается только один результат. Не знаю, нужно ли это, чтобы это был FYI.

Ответ 1

Always handle errors and exceptions.
Проблемы всегда будут присутствовать в приложении /api. Либо в начале, либо через дальнейшее развитие. Не оставляйте это в качестве конечной задачи и очищайте ее при возникновении ошибки с хорошо зарегистрированными сообщениями ответа.

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

Ответ 2

Самый большой и самый важный элемент, который я могу предложить, - гарантировать вашу инфраструктуру за WS или, по крайней мере, то, что вы обслуживаете через WS, является апатридом. В тот момент, когда вы отклоняетесь от формы, это станет кошмаром, и вы начнете использовать код, чтобы защитить ваши данные от загрязнения.

Примером может служить два клиента, которые вносят изменения в данные через WS, т.е. сохраняют конфигурацию. Как вы справляетесь с тем, что на заднем плане делает вещи интересными. Если ваши данные только отправляются исходящим, вы находитесь в гораздо лучшей ситуации, тогда вам придется поддерживать толкание данных в конец.

Кроме того, придумайте API в глубину, как и любой публичный API. В тот момент, когда у вас есть версия в дикой природе, а затем решить, что API нуждается в изменении или устаревании, начинает вызывать проблемы для клиентской базы, использующей ваш WS.

Ответ 3

В настоящее время я работаю над веб-приложением, которое включает веб-службу (или 2 в ASP.NET MVC), и я настоятельно рекомендую взглянуть на принципы сервис-ориентированной архитектуры (SOA), так как я обнаружил, что наиболее важные аспект заключается в том, чтобы правильно настроить дизайн API веб-службы, поскольку это повлияет на остальную часть вашего заднего конца и сделает вашу жизнь проще или вы столкнетесь с стенами из-за разочарования.

По сути, SOA означает проектирование веб-службы вокруг бизнес-процессов, то есть как люди, которые используют ваш API, могут использовать его.

Хороший desgin всегда хорошая идея, поэтому я настоятельно рекомендую вам много читать в Принципы дизайна Web Sevice до того, как вы начнете кодирование и спасите себя или какой-нибудь другой неудачный дерьмо из-за печали.

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

Ответ 4

Немного больше связано с реализацией, чем с дизайном: Я бы решил, что вывод службы будет XML - это может быть очень легко проанализировано всеми достойными языками. Кроме того, если какой-либо клиент нуждается в другом выходе, вы можете преобразовать эти XML файлы через некоторые XSLT-процессоры и предложить "другие" веб-службы, которые выведут JSON или что-то еще, что им нужно. Что касается отчетности, это зависит от того, как будут использоваться отчеты - если клиенты обрабатывают их, и им нужны только данные из отчетов, то снова предлагайте XML. На мой взгляд, работать с CSV сложнее, потому что вам нужно принимать во внимание все виды особых случаев типа "что произойдет, если мои данные содержат поле разделителя", "сможет ли клиент указать разделитель", "как я буду представлять вложенные данные", или все это прямо с XML. Если вашему клиенту нужны отчеты, чтобы использовать их из коробки, вы можете использовать BIRT - красивое и бесплатное

Ответ 5

Предоставление нескольких выходов, таких как JSON, CSV, YAML или XML, является хорошим - это дает конечному пользователю уверенность в себе при небольших затратах! Демпинговые данные всегда проще, чем обработка, и говорят, что они уже разбирают JSON по какой-то причине - гораздо проще просто подключить это для вашего API, чем реализовать, скажем, XML-парсер. В настоящее время я вижу XML-парсеров везде, поэтому, вероятно, это не проблема, но мне нравится более "воздушный" характер JSON; Я немного посмотрел на YAML, но никогда не использовал его, но он выглядит многообещающим, я окончательно использую его для конфигурационных файлов моего следующего проекта.

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

ИМХО безстоящий REST лучше, чем SOAP, потому что это меньше накладных расходов, можно легко общаться с REST-api вручную, используя curl или wget из терминала. Скачайте так, чтобы сказать.

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

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