在restful api 设计中,如果要获得一个资源,一定要用GET方法么?
我对restful不是非常的理解,在一些文章中,看到获取资源的时候,一般用GET方法。我的问题是,我要获取的资源是一个账户的信息,需要实用token,我一般把token放在POST请求里面,当然也可以将token放在连接中使用GET。
所以我很想知道,一般在实际的项目中,是怎么做的呢?
//补充问题:
我现在在做一个学生水平的小项目(比较菜),我用node.js做后端,但是native app和web用了一个后端。
那么我后端的形式类似
router.route('/account/address')
.get{//获得关于管理地址的网页而非用户地址的数据
send(web page)
}
.put{//增加一条地址
var addr
Account.putAddress
send(addr)
}
.delete{//删除一条地址
var addr
Account.deleteAddress(addr)
send(success)
}
实际上是我将get方法用作访问web页面(也是获取资源的一种,但是并非获取一些json串数据)。所以get被占用了,所以我才会有这种问题的。
也不知道实际的工作中app和web的后端是不是一套,或者设计api的时候有没有完全遵循restful-api?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对post、get、put、delete、option、head等请求方法,都是http method。具体的每种请求方法的作用都在http中定义了。在http中,post一般用于创建新的资源,put用于资源的更新,get用与获取资源等。所以使用post也可以获取资源,使用get也能创建资源或者更新资源,但一般不推荐,这里类似软件开发中的业界“约定”。
在Restful风格请求中,继续沿用这些特征。同时对url做了一些规范,对运维更加友好。
针对你说的token这个事情,在我项目中会使用post请求根据用户信息获取一个token,然后拿着token用get方法请求资源。另外,我也会将token放到http请求头中。
以上是个人工作经验,希望对你有帮助
GET用于信息获取,而且应该是安全的和幂等的。
POST表示可能修改变服务器上的资源的请求。
如果不涉及修改资源的,一般都是用GET,而且GET执行效率却比Post方法好。
GET 是对 Resource 的 获取 操作,语义上是这么约定的,跟你有没有参数 token 没有关系啊,当然你非要用 POST 也不是不可以啊。
另外,即使你需要 token 参数,也完全可以放在 headers 或 cookie 里全局使用的,不是必需放在 queyr 或 body 中。
就看你是否完全遵循Restful设计原则了, 如果完全遵循的话, 获取账户信息应当是GET请求, 但是token通常是会放在header中, 不在url中体现
获取账户信息:
GET /users/{userid}?token=TOKEN
新建用户:
POST /users?token=TOKEN
修改用户信息:
PUT /users/{userid}?token=TOKEN
删除用户:
DELETE /users/{userid}?token=TOKEN