Rest 如果不需要,我应该允许查询参数和分离数据吗?
我正在考虑如何在NodeJS中设计我的服务器。我曾考虑过允许或不允许客户端使用查询参数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
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参数也是如此,不过如果您有表单或网站,您可能应该确保用户只发送必要的数据