2009-08-21 3 views
67

Чтобы описать RESTful, мы можем сказать, что каждый ресурс имеет свой собственный URI. Используя HTTP GET, POST, PUT и DELETE, мы можем работать с этими ресурсами. Все ресурсы являются репрезентативными. Тот, кто хочет использовать наши ресурсы, может сделать это через браузер или клиент REST.В чем причина использования WADL?

Это основная идея архитектуры RESTful. Эта архитектура позволяет пользоваться услугами в Интернете. Итак, зачем нужна эта архитектура WADL? Что предлагает WADL для этого стандартного HTTP-протокола? Почему WADL должен существовать?

ответ

127

Целью WADL является определение договора . Контракт указывает, как одна сторона может позвонить другому.

При создании веб-приложения с нуля, вам не нужен контракт и WADL.

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

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

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

Собственно, создание клиента является второстепенной особенностью определения контракта. Это просто игрушка. Контракт обязывает плохих коммуникаторов четко сообщать правила интеграции. Это основная причина использования WADL или Open Specification или что-то еще.

+4

«--- SA SAES ASS» была лучшей частью. Есть ли какой-либо генератор кода PHP из файла WADL? –

+0

Если вам не нужен wadl в webapp. Что вам нужно сделать, чтобы отправить запрос на получение значений? – Jesse

+0

Вы можете попросить другую команду предоставить вам клиентский SDK, например. –

6
+0

Я так думаю, но Wadl может использовать внутри остальных, например http://www.youtube.com/watch?v=cDdfVMro99s. Кажется, что wadl поддерживает клиентов для использования функции сервера. И клиентам просто нужно иметь параметры и имя функции. – Iguramu

+7

То, что вы только что описали мне, звучит как RPC, а не REST. – aehlke

26

WADL призывает людей из мира SOAP, где он обычно используют генератор кода для создания клиентского кода на стороне на основе WSDL. Я не думаю, что этот механизм полезен в REST, поскольку он создает клиентский код, который связан с конечными точками сервера.

Я считаю, что если вы правильно определяете свои медиа-типы и используете гипермедиа в этих медиа-типах, тогда нет необходимости иметь WADL. Описание доступных конечных точек содержится в самих определениях типа мультимедиа. И если вы сейчас говорите себе, но приложение/xml не содержит никакой информации о доступных гиперссылках, то я говорю BINGO. Вот почему я не думаю, что application/xml и application/json являются подходящими медиа-типами для REST. Я не говорю, что не использую XML или JSON, просто не используйте общее имя типа мультимедиа.

Другая апелляция WADL предназначена для документирования служб REST. К сожалению, это приводит разработчиков к неправильному пути, поскольку WADL пытается документировать конечные точки на стороне сервера. Документирование служб REST должно фокусироваться прежде всего на медиа-типах. Разработчик клиента должен иметь возможность писать клиент REST, не зная какого-либо URL-адреса, кроме корневого URL-адреса.

+18

WADL также обращается к тем, у кого есть босс, который говорит, что вы должны иметь формальное определение в стандартном формате. Я не говорю, что это лучший способ сделать это, просто несколько раз полезно «проверить организационную коробку», так сказать. Тот факт, что это перебор, может быть потерян на одном из боссов. Тем не менее, наличие формального файла def может избавить вас от того, чтобы быть отброшенным обратно в SOAP-треп-канал, который сосут все остальные классные корпоративные дети. – Roboprog

+2

@Roboprog Документируйте ваши типы носителей вместо конечных точек. В реестре IANA есть много хороших примеров. Кроме того, Sun Cloud API - хороший пример. Вы должны убедить своего босса, что документирование конечных точек - плохая идея для будущего. –

+1

Это также удобно для разработчиков, которые на самом деле имеют больше, чтобы писать код клиента на весь день. –

35

Использование WADL подразумевает, что вы просто можете быть достаточно любезны, чтобы фактически определить данные/документы, которые вы передаете взад и вперед. Скажем, вы передаете некоторые фрагменты XML, они могут быть частью определенной схемы.

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

Формат данных является такой же частью интерфейса, как и имена глаголов.

+9

Использование REST требует, чтобы вы определяли данные/документы, которые вы передаете взад и вперед. Проблема с WADL заключается в том, что она также пытается определить конечные точки, которые не должны быть частью определения API. –

+4

Derrel, я не знаю ни одного веб-сервиса, для которого я когда-либо писал клиент, у которого не было ни одной конечной точки, с которой она была использована. –

15

WADL позволяет генерировать код, тесты и документацию. На самом деле существует очень мало полезных инструментов, использующих WADL, вы можете увидеть некоторые примеры here. Проблема с «чистым» REST, как описано в диссертации Филдинга, заключается в написании клиентов, поддерживающих Hypermedia (например, для написания клиентского приложения на основе Java Swing). С WADL эта задача полностью автоматизирована, и это огромное преимущество на мой взгляд. Тестирование становится еще проще.

15

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

WADL - это описание API веб-сервисов, немного похожее на WSDL для веб-сервисов типа SOAP, которое предназначено для более точной настройки интерфейсов RESTful (что-то похожего на WSDL).

Основное использование в моем опыте - дать вам возможность генерировать клиентский код, который может вызвать услугу (удобно, если это очень большой API, что буквально экономит часы работы).Он также служит для документирования REST-подобного интерфейса.

+3

Конечно, это хороший ответ. Сопротивление похоже от хардкорных людей SOAP, которые вообще не хотят REST, и некоторых хардкорных ковбоев REST, которые не хотят никакой дополнительной работы. Наличие формального документа - хороший фиговый лист, который должен иметь «предприятие», даже если это пустая трата времени для крошечного API при запуске. – Roboprog

+0

По моему опыту, есть три основные причины для чего-то вроде WADL: - много хороших разработчиков не знают REST. - Когда ваши часы, документы или API ускоряют работу. - Вы никогда не можете * предположить, что кто-то еще выполнил вызов REST так же, как и вы. Даже евангелисты REST не могут согласиться :) Я даже сталкиваюсь с случаями, когда среда не позволяет выполнять вызов DELETE или PUT, поэтому вы получаете REST-подобный интерфейс, который использует только вызовы GET и PUT. , а затем документация становится решающей. –

+0

Я уверен, что вы имели в виду GET и * POST *, как при подделке PUT и DELETE с фанковыми настройками POST. Увы ... – Roboprog

3

Если вы хотите открыть службы REST, лучший способ - создать WADL и поделиться с потребителем (подобно WSDL в веб-службах на основе SOAP) .WADL используется для описания службы на месте.

Смежные вопросы