我正在尝试使用Spring启动为Android应用构建一个简单的注册/登录系统。我在虚拟机中有一个MySQL数据库,其中包含一个列 id ,用户名,密码的表格。 Spring启动应用程序包含以下类; Account
(实体),AccountRepository
(存储库),AppConfig
(配置类)和Application
(主类)。我的端点是/accounts
。如果我想查看当前注册的帐户,我只需转到http://<ip address>:8080/accounts
获取数据库的JSON表示。
我想修改我的Android程序,以便在用户尝试注册帐户时,首先检查用户名是否已注册。问题是我无法在网络存储库中引用用户名 - 我必须使用帐户ID(例如http://<ip address>:8080/accounts/2
)。
有没有办法修改我的Spring启动应用程序以允许我直接引用用户名而不是通过他们的ID?因此,我不是让我的Android应用程序循环遍历每个数据库条目,而是可以向http://<ip address>:8080/accounts/johnstone01
之类的URL发送请求以查看我得到的响应(例如,如果响应为200,那么我知道用户名已存在且从而使用户选择不同的用户名)。
非常感谢任何建议。
答案 0 :(得分:0)
我建议创建POST请求mylist = [set(item) for item in list]
for i, item in enumerate(mylist):
for i1 in xrange(i + 1, len(mylist)):
for val in (item & mylist[i1]):
print "Index {} matched with index {} for value
{}".format(i,i1,val)
if i == 0:
print list[(i1)]
以创建帐户并在其中进行用户名检查。它可能是使用约束进行MySQL级别的检查。
对于用户名存在的单独检查,我建议通过添加查询参数“username”来修改GET请求:
Index 0 matched with index 1 for value "Red"
['red', 'blue', ' white']
Index 0 matched with index 1 for value "Blue"
['red', 'blue', ' white']
...
在这种情况下,响应将返回只有一条记录的数组,或者如果这样的用户名不存在则返回空数组。
答案 1 :(得分:0)
我知道您正在为您的服务器制作REST API。在这种情况下,正确的方法是创建一个接受POST请求的端点(例如POST http://:8080 / accounts post post request将包含用户信息)。
如果有人试图注册新帐户,您的应用会向您定义的端点发送POST请求,并提供创建新帐户的信息。其余的都将在您的服务层中进行。看来你没有一个,对于一个小项目来说没关系,我想服务代码在你的控制器中。这意味着您的控制器有责任检查实体是否可以持久化,如果是,则会这样做。
在您的存储库中,只需添加一个方法,该方法将接受用户名作为参数并返回该用户名的条目或null。这样你的控制器可以请求它,如果它是null,那么它可以持久化新实体并返回HTTP代码200,否则它应该返回409冲突代码。
您的应用只需检查返回代码即可知道发生了什么。