requests? 当处理不同类型的GET请求时,我应该如何格式化我的REST API?

10 浏览
0 Comments

requests? 当处理不同类型的GET请求时,我应该如何格式化我的REST API?

假设我有一个订单资源。为了获取我想要的资源,我会这样做:

GET /orders/{someId}

问题是,当有不同类型的获取请求时,我该怎么办?例如,用于编辑订单的GET请求或用于查看订单的GET请求。通常情况下,你只需使用orders/{someId},但在这种情况下,我需要为每个请求执行不同的业务逻辑(一些审计)。

也许我可以这样做:

GET /orders/{someId}?type=review

但这似乎不对。你有什么想法?

0
0 Comments

如何在处理不同类型的GET时格式化我的REST API?

REST API是一种使用不同的HTTP方法来执行不同操作的架构风格。这样可以使路径保持简洁和清晰。

例如:

GET /orders/{someId}

PUT /orders/{someId}

POST /orders/{someId}

DELETE /orders/{someId}

其中,GET用于检索资源,PUT用于更新资源,POST用于创建资源,DELETE用于删除资源。这遵循了基本的CRUD(创建、读取、更新、删除)操作。如果需要添加其他过滤器/参数,可以使用查询参数。

将HTTP方法与CRUD进行等同会导致在REST API中无法进行除CRUD之外的其他操作。HTTP方法比这灵活得多。

我并不是说要限制使用这4种HTTP方法。然而,在REST中,这通常是它们的用法。我想给出一个以此为设计思路的例子。当然,这些方法可以根据需要(RESTful或非RESTful)用于许多不同类型的请求,以提高灵活性。

REST映射HTTP方法到CRUD操作可能是对REST概念产生困惑的主要原因之一。我建议阅读这个答案以澄清这一点:stackoverflow.com/questions/19843480/…

0
0 Comments

在处理不同类型的GET请求时,如何格式化我的REST API?

这个问题的出现原因是有人在讨论中提到了一个GET请求的示例:`GET /orders/{someId}/action`。然后有人提出了疑问,认为GET请求不应该修改资源,而是用于加载资源,因此对于这个示例中的URL是否用于修改资源表示存疑。

对于这个问题的解决方法有两种观点。一种观点认为,GET请求不应该包含修改资源的操作,因此`/action`这样的动作应该被避免。另一种观点认为,虽然REST是基于资源而不是动作的,但是`/edit`和`/review`可以被视为不同的资源。

无论采取哪种观点,都可以使用不同的URL格式来表示不同类型的GET请求。例如,使用路径段表示不同类型的GET请求`GET /orders/{someId}/edit`和`GET /orders/{someId}/review`,或者使用查询参数`GET /orders/{someId}?type=edit`和`GET /orders/{someId}?type=review`。

以下是讨论中的一些观点和意见:

- GET请求不应该包含修改资源的操作,应该避免使用`/action`这样的动作表示。相反,可以使用不同的URL来表示不同的资源类型。

- `/edit`和`/review`可以被视为不同的资源类型,可以使用路径段或查询参数来表示。

- REST是基于资源而不是动作的,因此有人认为应该避免在URL中包含动作。

总之,对于处理不同类型的GET请求,可以采用不同的URL格式来表示不同的资源类型。无论是使用路径段还是查询参数,都可以根据自己的需求来选择适合的URL格式。重要的是保持一致性和清晰性,以便于其他开发者理解和使用API。

0