REST API GET 和 POST/PUT 的不同资源?
REST API different resources for GET and POST/PUT?
我目前正在设计一个 API 的 RESTful,因为我可以在 C# 中使用 Microsoft 的 Web API 2。我正在苦苦挣扎的是如何最好地表示资源或在 GET 调用和 POST/PUT 非常不同的地方使用正确的方法。
例如,假设我有一些调用状态的东西,这些状态有 id、名称、状态等,这些可以分配给文档。所以我有一条这样的路线 /documents/{id}/states/ 。如果我在这里调用 GET,我需要获取所有已分配状态的完整列表,包括它们的 ID、名称等。
但是,为了更改分配给文档的状态,我只需要传递 id。我不能单独执行此操作,它必须是一个发送的数组,因为用户可能一次与数百或数千个交互。
所以在这种情况下我有一些问题。我什至不知道 POST 或 PUT 在这里是否正确,第二个无论是哪个我都可以只接受一个整数数组吗?
对于您的情况,我建议您使用 PUT 方法,因为您知道要更新的资源的位置。有关详细信息,请参阅此处:http://restcookbook.com/HTTP%20Methods/put-vs-post/
在 ASP.NET Web API 2 中,您可以使用 [FromBody] 参数属性,这样您的方法签名将是:
public void UpdateStates(int id, [FromBody]List<int> states) {}
可以在此处找到有关参数属性的更多信息:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
我目前正在设计一个 API 的 RESTful,因为我可以在 C# 中使用 Microsoft 的 Web API 2。我正在苦苦挣扎的是如何最好地表示资源或在 GET 调用和 POST/PUT 非常不同的地方使用正确的方法。
例如,假设我有一些调用状态的东西,这些状态有 id、名称、状态等,这些可以分配给文档。所以我有一条这样的路线 /documents/{id}/states/ 。如果我在这里调用 GET,我需要获取所有已分配状态的完整列表,包括它们的 ID、名称等。
但是,为了更改分配给文档的状态,我只需要传递 id。我不能单独执行此操作,它必须是一个发送的数组,因为用户可能一次与数百或数千个交互。
所以在这种情况下我有一些问题。我什至不知道 POST 或 PUT 在这里是否正确,第二个无论是哪个我都可以只接受一个整数数组吗?
对于您的情况,我建议您使用 PUT 方法,因为您知道要更新的资源的位置。有关详细信息,请参阅此处:http://restcookbook.com/HTTP%20Methods/put-vs-post/
在 ASP.NET Web API 2 中,您可以使用 [FromBody] 参数属性,这样您的方法签名将是:
public void UpdateStates(int id, [FromBody]List<int> states) {}
可以在此处找到有关参数属性的更多信息:http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api