首页 > 在restful api 设计中,如果要获得一个资源,一定要用GET方法么?

在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?


GET用于信息获取,而且应该是安全的和幂等的。
POST表示可能修改变服务器上的资源的请求。
如果不涉及修改资源的,一般都是用GET,而且GET执行效率却比Post方法好。


获取账户信息:
GET /users/{userid}?token=TOKEN

新建用户:
POST /users?token=TOKEN

修改用户信息:
PUT /users/{userid}?token=TOKEN

删除用户:
DELETE /users/{userid}?token=TOKEN


postgetputdeleteoptionhead等请求方法,都是http method。具体的每种请求方法的作用都在http中定义了。在http中,post一般用于创建新的资源,put用于资源的更新,get用与获取资源等。所以使用post也可以获取资源,使用get也能创建资源或者更新资源,但一般不推荐,这里类似软件开发中的业界“约定”。
在Restful风格请求中,继续沿用这些特征。同时对url做了一些规范,对运维更加友好。
针对你说的token这个事情,在我项目中会使用post请求根据用户信息获取一个token,然后拿着token用get方法请求资源。另外,我也会将token放到http请求头中。
以上是个人工作经验,希望对你有帮助


GET 是对 Resource 的 获取 操作,语义上是这么约定的,跟你有没有参数 token 没有关系啊,当然你非要用 POST 也不是不可以啊。

另外,即使你需要 token 参数,也完全可以放在 headers 或 cookie 里全局使用的,不是必需放在 queyr 或 body 中。


就看你是否完全遵循Restful设计原则了, 如果完全遵循的话, 获取账户信息应当是GET请求, 但是token通常是会放在header中, 不在url中体现

【热门文章】
【热门文章】