Должны ли JSON RESTful веб-сервисы использовать контракт данных - PullRequest
3 голосов
/ 17 декабря 2010

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

Ответы [ 3 ]

5 голосов
/ 12 февраля 2012

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

5 голосов
/ 18 декабря 2010

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

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

1 голос
/ 25 декабря 2013

JSON Schema и Hyper-Schema - это форматы JSON Schema для определения содержимого и согласования содержимого.

Я работал над 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

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