http - RESTfully 设计/登录或/注册资源?

标签 http web-services restful-url rest

我正在设计一个网络应用程序,然后停下来思考我的 api 应该如何设计为一个 RESTful 网络服务。目前,我的大部分 URI 都是通用的,可能适用于各种网络应用程序:

GET  /logout   // destroys session and redirects to /
GET  /login    // gets the webpage that has the login form
POST /login    // authenticates credentials against database and either redirects home with a new session or redirects back to /login
GET  /register // gets the webpage that has the registration form
POST /register // records the entered information into database as a new /user/xxx
GET  /user/xxx // gets and renders current user data in a profile view
POST /user/xxx // updates new information about user

在搜索 SO 和 google 之后,我觉得我在这里做错了很多事情。

/logout 开头,也许因为我真的不GET任何 - 它可能更适合 POST请求 /logout ,销毁 session ,然后 GET重定向。应该 /logout长期停留?

/login呢?和 /register .我可以改变 /register/registration但这不会改变我的服务从根本上运作的方式 - 如果它有更深层次的问题。

我现在注意到我从不公开 /user资源。也许可以以某种方式利用它。例如,以用户 myUser 为例:

foo.com/user/myUser

foo.com/user

最终用户不需要 URI 中的额外冗长内容。然而,哪一个在视觉上更吸引人呢?

我在这里注意到关于 SO 的其他一些关于此 REST 业务的问题,但如果可能的话,我将非常感谢您对我在此处列出的内容提供一些指导。

谢谢!

更新:

我还想要一些意见:

/user/1

对比

/user/myUserName

最佳答案

RESTful 可用作构建 URL 的指南,您可以创建 session 用户 资源:

  • GET/session/new 获取具有登录表单的网页
  • POST/session 根据数据库验证凭据
  • DELETE/session 销毁 session 并重定向到/
  • GET/users/new 获取带有注册表单的网页
  • POST/users 将输入的信息记录到数据库中作为一个新的/user/xxx
  • GET/users/xxx//在个人资料 View 中获取并呈现当前用户数据
  • POST/users/xxx//更新用户的新信息

这些可以是复数或单数(我不确定哪个是正确的)。我通常使用 /users 作为用户索引页面(如预期的那样),并使用 /sessions 查看谁登录(如预期的那样)。

在 URL 中使用名称而不是数字(/users/43 vs. /users/joe)通常是为了更友好用户或搜索引擎,没有任何技术要求。两者都可以,但我建议您保持一致。

我认为如果您使用注册/登录/注销或sign(in|up|out),它在 restful 术语下效果不佳。

关于http - RESTfully 设计/登录或/注册资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140074/

相关文章:

javascript - Paypal 访问控制允许来源

java - CXF 在不更改 http.maxConnections 的情况下增加连接池大小

rest - 名称或 ID 作为 restful api 的 url

java - Web Service wsse 安全实现

api - 在 RESTful API 中检查资源存在的正确途径

node.js - 如何将参数解析为 RESTful API

api - Golang HTTP 请求返回 200 响应但正文为空

javascript - 我如何在 AngularJS 的索引页面上使用来自 Node.js 的信息

android - 如何从android向服务器发送数据

c# - HttpClient 响应没有得到刷新