我正在设计一个网络应用程序,然后停下来思考我的 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/xxxGET/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/