假设我有一个POST /orders操作,它将订单项的集合作为输入。 订单不能包含超过50个项目,但我在哪里执行此验证?

验证客户端和服务器中的订单大小将是多余的,如果我决定更改订单大小限制,则会增加维护成本。

仅在服务器中验证它将阻止客户端“快速失败”(即,您向订单添加了一千个项目,并且仅在完成时才通知限制)。

我假设客户端验证不是一个选项,因为API可能有其他客户端。

如果我有动态验证规则,问题会变得更复杂。 假设零售客户可以订购50件商品,但批发客户可以订购500件商品。 API是否应公开操作以便客户端可以获取当前的验证规则?

===============>>#1 票数:0

你必须做到这两点,但不同。

为了保证有效的操作,所有关键验证必须在服务器/ Web服务端进行。 客户端UI就是这样一个用户界面,可以方便人们与Web服务进行交互。 一旦Web服务稳定且安全,请创建一个默认方法,以通过客户端将Web服务错误传递给用户。 之后,UI层中的功能是可用性问题,应该基于测试(即使通过观察用户的肩膀或听取反馈进行非正式测试。)

===============>>#2 票数:0

我同意之前所说的话。

虽然,我认为如果您可以预测用户可能遇到的几乎所有情况,您也可以创建客户端验证。

根据您的批发/零售示例,您可以先创建一个下拉菜单,要求客户选择是批发还是零售,然后根据第一个选项将500/50规则应用于输入框。

显而易见的问题是,如果您的API发布给其他开发人员,他们可能不知道50/500规则,这是我同意之前关于服务器上发生的关键验证的答案的地方。 如果您正在为自己的用途构建API,那么您可以采用任何一种方式,因为您了解输入限制。 如果应用程序非常大,它还可以节省很多服务器成本(在服务器上进行验证会产生负担)。

  ask by Douglas translate from so

未解决问题?本站智能推荐:

2回复

我应该在客户端上验证API响应吗?

假设我有一个使用RESTFUL API的应用程序。 例如:我正在向端点“ / products”发送请求,并且正在接收JSON格式的响应。 然后,我在SPA应用程序中使用该数据。 一段时间后,响应的形状已更改。 我没有被告知这一事实。 结果,我的SPA应用程序崩溃了。 更改后,A
2回复

CRUD RESTful API中的业务逻辑

摘要 我想防止被标记为垃圾邮件发送者的用户在我的应用程序上发送消息。 Messaging API是否应该验证发送用户不是垃圾邮件发送者(从而返回400)? 还是来电者的责任? 架构: 细节 有几个应用程序和一个使用CRUD RESTful API的网站,其中有两
1回复

Symfony2-在REST API项目中使用表单验证

在一个Symfony REST API项目中,我们正在对传递到端点的参数进行验证。 我正在尝试为此目的使用表单,但是它们似乎无法按预期工作。 以这个端点为例: 接受companyId作为参数 我们希望此参数是必需的并且是整数。 控制器 表格类型 val
6回复

RESTful API - 在请求中传递虚假/未请求参数时的正确行为

我们正在开发一个RESTful api,它以JSON编码数据的形式接受请求中的查询参数。 我们想知道当非请求/非预期参数与所需参数一起传递时,正确的行为是什么。 例如,我们可能要求给定端点上的PUT请求必须分别为密钥名称和姓氏提供两个值: 如果传递假密钥怎么办,如下例中的颜色
1回复

Laravel 5 REST API验证

我对RESTful API和Laravel 5都很陌生,所以请原谅任何愚蠢的问题。 :-) 在Laravel 5中验证API请求(POST / PUT)的最佳方法是什么? 我已经了解了表单请求验证 ,但这似乎是针对表单的。 将它用于HTTP REST API也没有任何意义吗? 还有
2回复

在Symfony 4中验证Rest Api

我将为我的项目编写REST API。 我正在使用symfony4。我看到了几个示例,但没有一个适合我。 使用Form对象进行验证。 它对我不起作用,因为它是API,没有表单。 我不想编写哑类只是为了支持此功能。 在此页面https://symfony.com/doc/cu
1回复

Salesforce REST API的验证规则

我们如何通过REST API获得SalesForce中所有验证规则的列表? 我看到SOAP API(listmetadata)中有一些方法可以提供帮助,但在REST中找不到任何方法。 我尝试了describe方法,但是没有返回任何ValidationRule。 谢谢
1回复

API输入数据的Cakephp验证

我有一个API,可以接收JSON,XML和FORM数据中的数据。 API需要进行一些验证,具体取决于所提供的数据,取决于要验证的数据。 我有每个API调用必需的“发送模式”字段。 如果sendmode = 1,那么mobile,firstname和lastname是必填字段,但是,如果se
3回复

Symfony 3 REST API POST验证

在Symfony3 REST应用程序中处理实体验证的“最佳”方法是什么? 我知道我可以使用Form来做,并使用它已经存在的验证器(必填,电子邮件类型,重复类型,...)。 我是否还可以使用实体存储库或其他服务来验证,序列化和反序列化我的实体,从而使所有实体输入/输出逻辑都在同一位置?
1回复

Rails中的REST API参数验证

我正在编写一个仅具有REST API的Rails应用程序(没有Web界面等)。 我需要检查是否使用正确的参数进行请求,如果没有则返回不同的错误代码。 例如,我的所有API端点都需要user_access_token和client_id。 一些其他端点需要存在其他不同的参数。 在所有控