это зависит от того, как вы хотите моделировать свои ресурсы.Вполне возможно, что вы никогда не предоставите явно доступ к одному вопросу и изменили бы весь документ опроса, например:
PUT /surveys/123
<survey>
<link rel="update" href="/surveys/123" method="PUT"
type="application/vnd.mycorp.survey+xml" />
<question id="age">
<label>How old are you?</label>
<select>
<option>0 - 5</option>
<option>6 - 10</option>
<option>10 - 13</option>
</select>
</question>
</survey>
Если вы пойдете по этому пути, вы даже можете использовать HTML или HTML5 для вашего контента, так что его легко потреблять клиенты.Теперь вы просто изменяете весь документ опроса сразу.
В качестве альтернативы, вы можете захотеть отдельно ответить на каждый вопрос, задав ему индивидуальный URI, который, как мне кажется, и есть то, о чем вы говорите, например:
GET /survey/123
<survey>
<link rel="add-question" href="/survey/123/questions"
type="application/vnd.mycorp.surveyquestion+xml" method="POST" />
<question>
<link rel="delete" href="/questions/123-age" method="DELETE" />
<link rel="update" href="/questions/123-age" type="application/vnd.mycorp.surveyquestion+xml" method="PUT" />
<label>How old are you?</label>
<select>
<option>0 - 5</option>
<option>6 - 10</option>
<option>10 - 13</option>
</select>
</question>
</survey>
Ни один из них не является более RESTful, чем другой, разница только в гранулярности вызова.Если вам нужна гранулярность последнего, настройте отдельный обработчик для ресурса, как в
using(OpenRastaConfiguration.Manual)
{
ResourceSpace.Has.ResourcesOfType<Survey>().AtUri("/survey/{id}").HandledBy<SurveyHandler>();
ResourceSpace.Has.ResourcesOfType<Question>().AtUri("/questions/{id}").HandleBy<QuestionHandler>();
}