如果不需要,我应该允许查询参数和单独的数据吗?

Should I allow query parameters and seperate data if not needed?

我正在思考如何在 node js 中设计我的服务器。我有一些关于允许或不允许客户端使用查询参数 my.site.com?data=some data by the client 或在使用 POST 方法 {data:'some data by the client'} 时通过正文向服务器发送数据的想法。 我在质疑:

1) 是否有适当的方法来通过某些约束来设计我的服务器? 我正在考虑数据在不需要的情况下进入服务器,那么为什么接受这是一个好习惯?

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

示例

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

http://my.site.com/something

或者像这样

http://my.site.com/something?search=I search for anything

当用户向我发送此 GET URL:

http://my.site.com/something?here=not something that is useful to the server

我应该为 BAD REQUEST 发送 400 HTTP 状态或为 NOT FOUND 发送 404 或响应 200 OK?如果可以,如果服务器未使用它们,我为什么要允许其他查询?

同样的问题适用于 POST 方法,如果我需要例如

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

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

如果用户发送了额外的 url 参数,您应该忽略它。这是大多数服务器所做的。例如,Google 搜索 https://www.google.com/#q=ant&coolness=true returns 与 https://www.google.com/#q=ant 完全相同,因为 coolness 不是 url 使用的参数关键字 Google.

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