2015-07-30 2 views
1

Я работаю в системе викторины с использованием Spring Data Rest, который имеет следующую структуру:Spring запрос POST остальных данные

1 Викторин содержит много вопросов
1 Вопрос содержит много Ответов

Мы хотим, чтобы представить это со следующей структурой URL:

GET/Тест-сервис/викторины/1/вопросы/1/ответы - Получает все ответы, принадлежащие на вопрос 1 в викторине 1.
POST/Тест-сервис/викторины/1/questions/1/answers - добавляет ответ на вопрос 1 с в викторине 1.
POST/Тест-сервис/викторины/1/вопросы - Добавляет вопрос викторины 1.

В настоящее время, когда мы пытаемся и POST к вышесказанному, мы получаем HTTP 40-то код ,

Все идентификаторы в указанных выше URL уникальны. Далее, с 2 различных викторин со ссылкой на тот же вопрос, может вызвать проблемы:

/Тест-сервис/викторины/1/вопросы/1 - будет HTTP OK
/Тест-сервис/викторины/2/вопросы/1 - будут связаны с HTTP NOT FOUND, с учетом вышеизложенного.

У нас есть интерфейс репозитория для всех 3, викторин, вопросов и ответов.

В соответствии с this post и другими, которые мы видели, мы знаем, что вы можете использовать POST для/quiz-service/questions и либо включать ссылку на викторину, либо сделать второй запрос в конечную точку викторины, добавив вопрос. Несмотря на это, есть ли вообще способ, которым мы можем это сделать?

Спасибо заранее

+0

Какова конкретная ошибка, которую вы получаете? – Makoto

+0

Ну, мой совет будет заключаться в том, чтобы использовать больше конечных точек, а не потому, что то, что вы предлагаете, не обязательно нужно делать, но в долгосрочной перспективе это будет очень запутанным. Попробуйте следовать шаблонам REST и установить конечную точку для каждого, то есть одного для добавления ответов, а один для добавления вопросов и т. Д. – breakline

+0

Вы можете использовать это как руководство для разработки других API-интерфейсов более интуитивно. Особенно в разделе «Использовать URL-адрес и действия RESTful» http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api – cherit

ответ

1

Spring Data REST, позволяя использовать гипермедиа интенсивно, так что пока у вас есть определенный контроль над структурой URI, нет никакого способа (или должен ли быть необходимость) вам настроить его так, как вы хотите его выглядит как. Прагматичным способом является использование связей, которые подвергаются воздействию, и использовать их, как описано в документе reference documentation.

С использованием гипермедиа, разработка схемы URI в основном становится неактуальной. Важно то, какие представления предоставляет ресурс, который связывает его, и т. Д. Spring Data REST по умолчанию использует много для вас, все это описано в документации, связанной выше.

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