Rest 如果不需要,我应该允许查询参数和分离数据吗?

Rest 如果不需要,我应该允许查询参数和分离数据吗?,rest,restful-architecture,query-parameters,http-method,Rest,Restful Architecture,Query Parameters,Http Method,我正在考虑如何在NodeJS中设计我的服务器。我曾考虑过允许或不允许客户端使用查询参数my.site.com?data=客户端发送的一些数据或使用POST方法时通过主体发送数据{data:'some data by the client'}。 我在问: 1) 有没有一种合适的方法可以通过一些约束来设计我的服务器? 我在考虑数据不需要就进入服务器,那么为什么接受这是一个好的做法呢 2) 如果我不允许客户端在不需要时发送查询或正文数据,我应该返回什么HTTP状态(404或400) 示例 我有一个GE

我正在考虑如何在NodeJS中设计我的服务器。我曾考虑过允许或不允许客户端使用查询参数
my.site.com?data=客户端发送的一些数据
或使用POST方法时通过主体发送数据{data:'some data by the client'}。 我在问:

1) 有没有一种合适的方法可以通过一些约束来设计我的服务器? 我在考虑数据不需要就进入服务器,那么为什么接受这是一个好的做法呢

2) 如果我不允许客户端在不需要时发送查询或正文数据,我应该返回什么HTTP状态(404或400)

示例

我有一个GET方法的URI路径,我希望只有这样的路径

http://my.site.com/something

还是像这样

http://my.site.com/something?search=I 搜索任何内容

当用户向我发送此GET URL时:

http://my.site.com/something?here=not 对服务器有用的内容

我应该为坏请求发送400 HTTP状态还是为找不到发送404状态,或者响应200 OK?如果可以,如果服务器没有使用其他查询,为什么我应该允许它们

同样的问题也适用于POST方法,如果我需要举例说明的话

{uname:'username',pwd:'password'}
例如,为什么我应该允许用户发送我


{uname:'username',pwd:'password',some:'other data here'}
??

如果用户发送额外的url参数,您应该忽略它。大多数服务器都是这样做的。例如,谷歌搜索
https://www.google.com/#q=ant&coolness=true
返回与
https://www.google.com/#q=ant
因为
coolness
不是谷歌使用的url参数关键字

额外的POST参数也是如此,不过如果您有表单或网站,您可能应该确保用户只发送必要的数据