Rest 检查用户名是否有效的API端点的最佳名称
我将设计一个RESTful API,用于检查调用方提供的用户名是否有任何错误(例如重复、无效字符或黑名单中列出的名称…) API应该将检查结果(有效或无效)返回给调用方,以便调用方知道他是否可以使用此用户名 如何命名API端点 我最初认为Rest 检查用户名是否有效的API端点的最佳名称,rest,api,naming-conventions,restful-architecture,Rest,Api,Naming Conventions,Restful Architecture,我将设计一个RESTful API,用于检查调用方提供的用户名是否有任何错误(例如重复、无效字符或黑名单中列出的名称…) API应该将检查结果(有效或无效)返回给调用方,以便调用方知道他是否可以使用此用户名 如何命名API端点 我最初认为GET/checkUserName/{username}或GET/isusernamefalid/{username}是我的API的好名字。但我不确定它们是否真的很好。我不知道如何方便别人接受我的名字 GET是http方法username是调用者提供的参数 我读
GET/checkUserName/{username}
或GET/isusernamefalid/{username}
是我的API的好名字。但我不确定它们是否真的很好。我不知道如何方便别人接受我的名字
GET
是http方法username
是调用者提供的参数
我读过以下两篇文章:
但是,我的API的名称似乎不适合上述文章中描述的所有准则
其中一个指导方针说
使用名词,但不要使用动词
按照这条准则,GET/checkUserName/{username}
是不合适的。因为它包含动词check
GET/isusernamefalid/{username}
也不合适。因为是一个动词
如果我必须遵循RESTful设计的指导原则,那么API的最佳名称是什么
我想不出一个不包含动词的合适名称。听起来好像您正试图构建一个RPC API,但想将其称为REST.)
有一点
通常,我会尝试建议重构,因为一般来说,验证最好在服务器端处理,定义JSON模式并与前端共享,这样他们也可以在本地使用JSON模式验证器并匹配验证
“重复”标准是JSON模式无法验证的一件事,我确信用例就是其中一个用户名框,在提交实际表单之前,它会立即反馈用户名的好坏
所以有一些方法
1.)微服务
Buzzword是的,但通常当一个小小的端点需要做一件特定的事情时,特别是当这个事情是一点RPC,API的其余部分是RESTAPI时,我使用一个小小的服务
通常为了RAD而使用的API是用PHP或Ruby编写的,并且有一些巨大的框架,但是对于一些需要快速工作的小系统,我经常使用一些较小的工具,比如Go
当然,您可以使用相同的语言,而通常的Sinatra与Rails的区别也开始发挥作用。这可能只是一个RPC
2)休息撬棍
因此,要使其成为RESTful,您只需要创建一个新的资源类型,它需要如下所示:
POST /username-checks
{ "username": "foo" }
我不太喜欢这个,但这可能是因为有一个更好的设计,我们甚至没有考虑过
3)老大哥
一旦登记表中输入了类似电子邮件的内容,请保存到目前为止在表格中填写的所有内容
这可能是一个带有填充字段的POST/users
,默认状态为“potential”,也可能是其他一些POST/user potential
资源。这取决于你,但是很少、很早发布的想法有两个好处
你可以做废弃的购物车式的提醒,让人们“完成他们的账户”,这在电子商务世界变得越来越普遍
一旦您创建了这个资源,您就有了一个UUID,您可以对它进行攻击李>
尝试使用无效用户名进行修补将导致验证错误
PATCH /users/<uuid>
{ username: "admin" }
修补程序/用户/
{用户名:“管理员”}
对于你的错误,考虑使用,这太棒了。
我不想在这里建立一个错误的三分法,可能还有一些其他的方法,但我真的会考虑1或3,2可能是我为了得到一个完整的答案而投入的。我实际上更喜欢这个< /P>
POST /usernames/:username/check
因为它将username
转化为一种资源,为将来处理用户名的API端点铺平了道路,例如
POST /usernames/:username/exists
我计划做的是,将我想根据一些规则验证的字段与它们所属的对象分开处理,在该字段所属的对象下创建该字段的子资源,然后尝试为其创建(发布)值。如果返回409,则已经存在一个。如果它返回200 OK或201 Created,则它是有效的。400表示验证失败
或者,我正在考虑对该字段的特定实例(用户输入的数据)执行GET,如果它返回404,那么它是唯一的,并且不存在。如果您需要执行某种业务规则验证,而不是唯一性验证,我认为这种方法不太管用。POST
{username:'xyz',password:'blah'}
to/authenticate
很好,因为authenticate意味着验证凭据是否正确。或者/users/{username}/isValid?API不必检查属于用户的密码。要在“用户”上下文中包含新服务以进行验证,我会选择“/users/{username}/validation”。如果您希望在将来为其他资源扩展此验证过程,则可以执行诸如“/validation/users/{username}”之类的预修复。谢谢。但是我认为GET/usernames/:username/check
更合适。因为我从API端点获取数据<代码>发布
用于创建数据。