Web services 如何处理restful“;行动“;在一个物体上。

Web services 如何处理restful“;行动“;在一个物体上。,web-services,api,rest,Web Services,Api,Rest,所以我想知道在不改变对象状态的对象上执行操作的最佳实践是什么。如果这对我来说没有意义,我想推特的例子解释了我想说的 我理解这里描述的基本知识: 以及它在更新/获取/删除对象时的工作方式。但是对于不改变对象状态的操作呢 例如,假设我们有一个tweet对象: GET `/tweets (gets a list of tweets) GET `/tweets/new (gets a new page to create a new tweet) POST `/tweets (

所以我想知道在不改变对象状态的对象上执行操作的最佳实践是什么。如果这对我来说没有意义,我想推特的例子解释了我想说的

我理解这里描述的基本知识:

以及它在更新/获取/删除对象时的工作方式。但是对于不改变对象状态的操作呢

例如,假设我们有一个tweet对象:

GET     `/tweets  (gets a list of tweets)
GET     `/tweets/new (gets a new page to create a new tweet)
POST    `/tweets (posts data to server to create new tweet)
GET     `/tweets/:id (get a single tweet)
GET    `/tweets/:id/edit (get a page to edit an exisiting tweet)
PUT    `/tweets/:id (put data to server to edit exisiting tweet)
Delete `/tweets/:id (delete an exisiting tweet)
这对我来说很有意义。但是我如何为reply/follow/retweet/favorite创建URL,其中一些实际上不会改变tweet的状态

我应该像下面这样做吗

POST   `/tweets/:id/reply       (post the reply message to the server)
POST    `/tweets/:id/follow     (post a boolean? yes I follow?)
POST    `/tweets/:id/retweet    (again post a boolean?)
POST    `/tweets/:id/favorite   (ditto)
或者做一个

POST     `/tweet/:id/actions  (Do a post with the action I want to take as a parameter)
还是没有“标准方式”。 无论如何,谢谢你的帮助

好问题

和往常一样,它有助于将框架转换为名词而不是动词。当您回复/等时,您正在使用哪些资源。?这些资源是否也可以获取/寻址

在你提到的每一个案例中,我认为第二个问题的答案都是肯定的。事实上,两者都遵循这种方法

例如,答复:

  • GET/tweets/:id/replays
    获取回复给定tweets的tweets列表

  • POST/tweets/:id/replays
    创建新tweet以回复给定tweet。这里重要的一点是,成功是创建了一个
    201
    w/将
    位置
    头设置到创建的tweet的端点,例如
    /tweets/1234

  • (删除回复就是删除推文。)

下面的/转发/偏好有点棘手,因为“名词”是轻量级连接,事实上,我只是问了一个堆栈溢出问题,以了解公开这些连接的“最佳”方法:

您可以在该线程上看到您可能实现以下/转发/偏好的具体方式


希望这有帮助

用名词而不是动词来描述事物,这是一个很好的观点。你的问题和来自github、facebook等网站的例子非常有用。这类事情似乎没有标准的处理方法/