0

我正在使用 OpenRasta 创建一个调查应用程序。

我有一个 SurveyResource,可在 /surveys/{id} 访问并在 /surveys/{id}/edit 进行编辑

我现在想在调查中添加问题,因为这是调查的重点,但我不确定这样做最安静的方式是什么以及如何在 OR 中进行设置。

我想我应该有一个 QuestionResource(包含问题类型、问题文本等的详细信息),它应该发布到 /surveys/{id}/questions 并由问题处理程序处理,但我无法工作了解如何配置 OR。

我已在https://github.com/oharab/OpenSurvey/tree/add_question_to_survey将我的项目推送到 github

谁能帮我?

4

1 回答 1

1

这取决于您要为资源建模的方式。您完全有可能永远不会明确提供对单个问题的访问权限,而是会修改整个调查文档,如下所示:

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 或 HTML 5,这样它就很容易被客户使用。现在您只需一次修改整个调查文档。

或者,您可能希望单独解决每个问题,给他们一个单独的 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>();
}
于 2011-08-16T08:19:59.747 回答