代码之家  ›  专栏  ›  技术社区  ›  MichaelJones catherine

如何对编辑表单执行RESTful请求?

  •  2
  • MichaelJones catherine  · 技术社区  · 15 年前

    我想我对REST有一个基本的了解,但我一直坚持的是如何请求HTML表单来编辑资源。

    据我所知,如果资源

    user/12
    

    你用内容类型“text/html”做一个测试,然后你会得到一些html,显示用户的详细信息。

    我不明白的是如何返回html,该html将显示一个表单,允许您编辑用户的详细信息(并最终发送回PUT以更新用户)

    我看到:

    user/12/edit 
    user/12;edit
    

    这对我来说并不是特别的平静。就我个人而言,在不知道其他情况(包括它是否有效)的情况下,我会考虑在HTTP头的“Accept:”行上传递某种edit=true参数。

    有没有明确的方法?

    编辑 适当的

    4 回复  |  直到 15 年前
        1
  •  3
  •   yfeldblum    15 年前

    对于这类事情没有特殊的方法或标题(使用给定资源的可编辑表单的HTML进行响应)。而使用querystring参数只会让情况变得更糟。

    相反,人们可能会在概念上将可编辑表单本身视为资源,并为其分配路径 /user/12/edit . “回发”当然是 PUT /user/12 (或者,在轨道中, POST /user/12 _method=PUT& POST 教育实体)。

    当一个人 GET /user/12 ,一个是要求代表 用户 . 当一个人 GET /user/12/edit ,一个是要求代表 表格

    这是REST的精确扩展吗?这是纯粹的休息吗?值得商榷。但是,你还打算做什么?

        2
  •  2
  •   Rob Hruska MegalomanINA    15 年前

    将HTML表单作为资源表示返回时,会将您的演示文稿和数据紧密地结合在一起。如果您只返回基本的资源表示形式(其中 能够 可以是HTML,但我不希望它包含表单元素),然后依靠我的客户机以HTML中可编辑的方式标记数据。

    此外,如果要返回一个带有标记资源的HTML表单,表单数据将如何发送回服务器?浏览器通常只支持表单操作的POST和GET,但是对已经存在的资源进行POST并不是RESTful的;你会想做一个推杆。在浏览器支持所有(或至少更多)HTTP方法之前,直接在浏览器表单中使用RESTful API将从根本上被打破(至少在REST约束的范围内)。

    编辑:

    要回答您的问题,即您将如何让客户机通知服务器它希望如何收回资源,您可以使用 content negotiation . 服务器根据请求头以适当的格式返回资源。它可能会使用标头中的用户代理,或者客户端可能会指定特定的 Accept

    编辑2:

    修改了我关于返回非RESTful表单的声明,请参见下面的注释。

        3
  •  1
  •   jro    15 年前

    REST是一个概念,而不是一个实现。这意味着,虽然您对返回html的内容类型为text/html的RESTful URL的描述肯定是有效的,但它不能保证返回的有效负载。由REST服务的实现者以其形式返回数据。

    从您请求的REST条目向后工作,并查看返回的有效负载。这将告诉你所有你需要知道的关于你使用这个URL的信息,以及你需要在消费方面做多少工作。

        4
  •  1
  •   Jonathan del Strother    15 年前

    只是为了它的价值-AFAIK,用户/12;编辑只在Rails中使用,而且只使用了一两个月。是的 dropped 相当快。