用于REST方法的URL

时间:2013-03-02 22:47:33

标签: javascript rest

我正试图以正确的方式解决这些问题以便以一种宁静的方式表达以下方法......

假设我有x个服务器,它们运行Windows,Linux和Unix。

每个服务器都可以执行ping,shutdown和针对它们的用户操作。

API不了解服务器,因此请求必须提供IP地址以及服务器类型和操作类型(它确实知道)。

考虑到这一点,我们会想到这些简单的URL,但不会有任何宁静:

/192.168.1.3/Linux/ping 
/192.168.1.5/windows/shutdown 

我应该沿着宁静的路线走下去吗?或者上面是否可以使用简单的Web API?

如果它看起来很安静吗?

GET /servertypes/{servertypeId}/actions/{actionId}?serverip=192.168.1.4

2 个答案:

答案 0 :(得分:2)

这似乎对我更有意义:

GET /servertypes/{servertypeId}/{serverip}/{action}

答案 1 :(得分:0)

在我看来,你应该重新考虑你的设计。

通过将命令名放在URL中,您可以有效地覆盖HTTP方法的语义,这些URL用于表示作用域信息。 GET请求should not lead to changes of state。忽略底层协议不被视为RESTful。

这里有什么看起来像RPC模型并不真正符合REST的原则。在我看来,你正试图将一个方形钉子敲入一个圆孔。

您还应该问自己是否真的有必要公开底层操作系统。你想调用系统特定的命令吗?是否可以运行任何可执行文件或只是几个常见的可执行文件?你是否应该关心UNIX机器上的grep或Windows机器上的findstr?客户是否关心他们使用的是Windows还是Linux机器?

你可以选择一个类似于Uzar Sajid建议的简单模式。它可能会正常工作。只是不要把它称为RESTful,因为它不是。