使用URL中的ID以外的属性引用对象

时间:2017-01-08 17:31:25

标签: java android database amazon-web-services spring-boot

我正在尝试使用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,那么我知道用户名已存在且从而使用户选择不同的用户名)。

非常感谢任何建议。

2 个答案:

答案 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冲突代码。

您的应用只需检查返回代码即可知道发生了什么。