如何为一组参数设计REST API?

时间:2015-04-10 05:00:51

标签: rest

我需要设计REST API来为一组参数返回资源。让我们说我需要返回一个数字序列,它由三个参数决定:生成方法,初始种子和比例。我提出的初稿是

(GET/POST) http://url/sequence?method=A&seed=100&scale=5.

序列是动态生成的,但在给定参数集(A,100,5)时是确定的,因此可以缓存。但这感觉非常不稳定。我可以把它改成

(GET) http://url/sequence/A/100/5.

哪一个更好?或者两者都不好?

此外,scale可能是可选的,默认值为1。这很容易作为查询处理,但在URL路径中不那么明显。我应该怎么处理?


我应该添加一些参数集的信息。只有少数"方法" s,但主要有无限的"种子" s" scale" s。

2 个答案:

答案 0 :(得分:2)

RESTful URI是矛盾的。只要URI引用一个且只有一个资源,它就是RESTful。期。对REST来说重要的不是URI语义,而是客户端如何获取它们。如果他们从文档中复制URI模板而不是将它们作为链接,那么它不是REST。询问任何一个选项的RESTfulness都没有意义,尽管你会在无休止的讨论中找到关于是什么使URI更多或更少RESTful的人。

然而,尽管URI语义与REST无关,但它们对开发人员的可读性很重要,因此从这个角度来看,您的问题更有意义。考虑到这一点,我说第一个选项更好,因为虽然URI是原子标识符,但对于任何开发人员而言,这三个值都是可变参数,而不是路径的一部分,这一点非常清楚。你有一个可选参数的事实使它更好。

答案 1 :(得分:1)

这两个网址都是RESTful。但是,如果您想要POST资源,请不要使用GET

两个网址都可以轻松处理选项scale

GET http://url/sequence?method=A&seed=100

GET http://url/sequence/A/100