我对如何在节点js中设计我的服务器有一些想法。关于允许或不允许客户端使用查询参数my.site.com?data=some data by the client
或使用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 search for anything
当用户向我发送此GET网址时:
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'}
...
答案 0 :(得分:0)
如果用户发送额外的url参数,您应该忽略它。这是大多数服务器所做的。例如,Google搜索document.querySelectorAll
会返回与https://www.google.com/#q=ant&coolness=true
完全相同的内容,因为https://www.google.com/#q=ant
不是Google使用的url参数关键字。
对于额外的POST参数也是如此,但如果您有表单或网站,则应该确保用户只发送所需的任何数据。