Asp.net RESTAPI管理字段最大字符数的最佳实践是什么?

Asp.net RESTAPI管理字段最大字符数的最佳实践是什么?,asp.net,rest,asp.net-web-api,Asp.net,Rest,Asp.net Web Api,我有一个Web Api RESTful服务,它有几个POST端点,用于向数据库插入新对象。我们希望将对象名称接受的最大字符数限制为20个。DB、API或UI应该处理这个问题吗 显然,我们可以在任何一层上阻止超过20个字符。但是,如果它通过了UI,则表单已提交。在这一点上,我们希望服务层或DB层返回一个关于它为什么不被接受的详细解释。处理这个问题的最佳做法是什么 DB、API或UI应该处理这个问题吗 至少,您的API必须处理数据验证。对于REST应该如何工作,每个人都有自己的看法,但是一个好的方法

我有一个Web Api RESTful服务,它有几个POST端点,用于向数据库插入新对象。我们希望将对象名称接受的最大字符数限制为20个。DB、API或UI应该处理这个问题吗

显然,我们可以在任何一层上阻止超过20个字符。但是,如果它通过了UI,则表单已提交。在这一点上,我们希望服务层或DB层返回一个关于它为什么不被接受的详细解释。处理这个问题的最佳做法是什么

DB、API或UI应该处理这个问题吗

至少,您的API必须处理数据验证。对于REST应该如何工作,每个人都有自己的看法,但是一个好的方法是返回HTTP 400(坏请求),其中包含一些关于请求为什么坏的信息

除此之外,客户端检查是一个明确的奖励。理想情况下,您甚至不会看到此代码在您的API层中受到攻击。客户端还应该能够以优雅的方式处理潜在的“错误请求”响应。如果API和客户端应用的规则不匹配,您将希望客户端识别其操作未成功,并显示适当的错误以帮助用户响应问题

如果您允许数据通过批量导入或其他方式绕过API层,那么数据库级检查也是一个好主意。如果没有,那么如果您更改了验证需求,那么数据库可能只是您必须记住要更改的另一个地方

DB、API或UI应该处理这个问题吗

至少,您的API必须处理数据验证。对于REST应该如何工作,每个人都有自己的看法,但是一个好的方法是返回HTTP 400(坏请求),其中包含一些关于请求为什么坏的信息

除此之外,客户端检查是一个明确的奖励。理想情况下,您甚至不会看到此代码在您的API层中受到攻击。客户端还应该能够以优雅的方式处理潜在的“错误请求”响应。如果API和客户端应用的规则不匹配,您将希望客户端识别其操作未成功,并显示适当的错误以帮助用户响应问题


如果您允许数据通过批量导入或其他方式绕过API层,那么数据库级检查也是一个好主意。如果没有,数据库可能只是您在更改验证要求时必须记住更改的另一个地方。

明白了,所以字符串不超过20个字符的简单验证应该是有效的?只要立即向UI返回一个错误的请求响应,以防它通过?这正是我所倾向的,但如果服务处理它没有意义,我不想添加多余的代码。@LeythG:对。请记住,您无法控制API之外的任何内容,因此恶意用户可能会试图交付大量有效负载来干扰您。或者有人可能会在某一天针对您的API编写不同的客户端(例如,针对移动应用程序),然后忘记包含此检查。或者,当您升级客户端库时,可能会引入一个缺陷,该缺陷会突然使您的客户端无法执行它应该执行的验证。API层是控制这一点的唯一最重要的一点。这很有意义,非常感谢您的响应和帮助。明白了,所以字符串不超过20个字符的简单验证应该是有效的?只要立即向UI返回一个错误的请求响应,以防它通过?这正是我所倾向的,但如果服务处理它没有意义,我不想添加多余的代码。@LeythG:对。请记住,您无法控制API之外的任何内容,因此恶意用户可能会试图交付大量有效负载来干扰您。或者有人可能会在某一天针对您的API编写不同的客户端(例如,针对移动应用程序),然后忘记包含此检查。或者,当您升级客户端库时,可能会引入一个缺陷,该缺陷会突然使您的客户端无法执行它应该执行的验证。API层是控制这一点最重要的一点。这很有意义,非常感谢您的响应和帮助。