Если веб-службы JSON RESTful используют контракт с данными

Это вопрос дизайна. Мне интересно, если Spring3.0 REST-сервисы, которые содержат полезную нагрузку JSON, предоставляют какой-то контракт с данными, аналогичный традиционным веб-сервисам, который следует за контрактом-первым дизайном. Я знаю, что JSON имеет схему, похожую на XSD, но где она подходит в spring? Задний план: Я рассматриваю использование json в качестве полезной нагрузки проекта архитектуры клиентского сервера, где клиент - это приложение на основе .NET и контракт на передачу данных, должно обеспечивать способ обработки нескольких версий клиента. Клиент должен иметь возможность отправлять структуры данных на сервер. Или, может быть, я должен использовать подход без схемы и использовать "Simple Data Binding", который похож на XmlAnyElement?

Ответ 1

"Контракт" с "регулярными" веб-сервисами определяется в файлах WSDL (включая XSD). С помощью служб RESTful эти файлы называются WADL. И spring -mvc не поддерживает создание WADL. (Реализации JAX-RS).

Но даже если бы и было, службы RESTful считаются более "динамическими", и их не нужно фиксировать так. Например, взгляните на API-интерфейс Facebook и twitter REST. Они не предоставляют схемы WADL или JSON. Они предоставляют некоторую бесплатную документацию об их услугах. Этого должно быть достаточно.

Ответ 2

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

Ответ 3

Схема JSON и Hyper-Schema - это форматы JSON Schema для указания согласования содержимого и содержимого.

Я работаю над API HATEOAS (Hypermedia как механизм состояния приложения), используя JSON Hyper Schema. Вы можете перейти по URL-адресу ниже, просмотреть, зарегистрировать, войти и сделать некоторые действия.

Проверьте это здесь: http://direct.psprt.com:8081/

Я также открыл исходный код API до сих пор: http://bpanahij.github.io/passportedu_schema/

Не стесняйтесь смотреть, брать и комментировать.

Кроме того, проверьте Javascript JSON-Hyper-Schema-клиент. Он динамически создает клиентское приложение HTML с помощью Angular, анализируя схему, предоставленную в конечной точке данного ресурса, с помощью метода OPTIONS.

https://github.com/bpanahij/passportedu_schema/tree/master/client