REST风格的URL的首选方法?

Pra*_* R. 4 java rest json spring-mvc

我正在创建一个包含REST风格服务的Web应用程序,我想要了解一下我的Java服务器端应该如何接受POST请求的首选(标准)方法:

方法1: http:// localhost:8080/services / processser / uid / {uidvalue}/eid/{eidvalue}

方法2: http:// localhost:8080/services/processuser {uid:"",eid:""} - 这将在帖子正文中作为JSON发送

两种方法都使用"application/json"内容类型,但每种方法都有优点和缺点.方法2的一个缺点,我可以立即想到的是,JSON数据需要映射到Java Object,从而在任何用户访问"processuser"servlet api时创建Java对象.非常感谢您的意见.

在此特定实例中,数据将用于查询数据库,以将json响应返回给客户端.

Art*_*cto 6

我想我们需要从你的问题中稍微回顾一下.您的路段开头于:

/services/processuser
Run Code Online (Sandbox Code Playgroud)

这是个错误.URI应标识资源,而不是操作.这可能并不总是可行,但这是你应该努力的事情.

在这种情况下,您似乎用a uid和a eid(无论是那些)识别您的用户.如用户是指由你可以构建路径/user/<uid>/<eid>, /user/<uid>-<eid>(如果你必须/user/uid/<uid>/eid/<eid>); 如果eid是专业化,而不是平等的uid话,/user/<uid>;eid=<eid>那就更合适了.

您可以通过发布/user//user/<uid>/<eid>如果您事先知道标识符来创建新用户,使用DELETE on删除用户/user/<uid>/<eid>并使用PUT 更改状态/user/<uid>/<eid>.

因此,要回答您的问题,/user/<uid>/<eid>如果"processuser"旨在使用您提供的数据更改用户的状态,则应使用PUT .否则,到REST模型的映射不是那么干净,可能最好的选择是定义资源/user/process/<uid>/<eid>并在那里使用所有数据进行POST,但是对于所有数据的POST /user/process将或多或少相同,因为我们'已经在类似RPC的阵营.