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

时间:2017-07-16 22:19:52

标签: rest restful-architecture query-parameters http-method

我对如何在节点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'} ...

1 个答案:

答案 0 :(得分:0)

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

对于额外的POST参数也是如此,但如果您有表单或网站,则应该确保用户只发送所需的任何数据。