Java RESTAPI请求主体持有数据库主键

Java RESTAPI请求主体持有数据库主键,java,rest,Java,Rest,因为我是个新手,我的问题可能很简单。我在谷歌上搜索了一下,但没有找到令人信服的答案。致力于开发RESTAPI,API的目的是从现有学生中创建一个玩家团队。POST方法,到目前为止,请求主体将在请求主体中保留学生ID(主键) 在访问REST API时,请求正文是否可以包含表主键?是,它可以。但向客户机公开DB ID并不是最佳做法。您可能需要通过唯一的用户名或电子邮件来识别玩家 您可以使用加密程序对Id或主键进行加密,然后在服务器端接收时对其进行解密。这也将保存漏洞问题,因为您将在服务器端验证Id,

因为我是个新手,我的问题可能很简单。我在谷歌上搜索了一下,但没有找到令人信服的答案。致力于开发RESTAPI,API的目的是从现有学生中创建一个玩家团队。POST方法,到目前为止,请求主体将在请求主体中保留学生ID(主键)


在访问REST API时,请求正文是否可以包含表主键?

是,它可以。但向客户机公开DB ID并不是最佳做法。您可能需要通过唯一的用户名或电子邮件来识别玩家

您可以使用加密程序对Id或主键进行加密,然后在服务器端接收时对其进行解密。这也将保存漏洞问题,因为您将在服务器端验证Id,因此在发送Id的POST请求时无法保存恶意问题

我将再次发布整个答案,但只是添加一个概述

@JsonIgnore
private Long PrimaryKey;
private String Id;
//Other variables
public Long getDecryptedPrimaryKey(){
  //Decryption Logic for Id value
}

Public String getId(){
 //Encryption Logic
}

在这里,当JSON Serialiser获取Id时,它将调用Id的getter,Id将自动得到加密,而当您保存或更新数据时,您可以调用getDecryptedPrimaryKey来获取实际值

它可以。但是,最好不要通过RESTAPI泄漏内部ID。改为使用稳定标识符。@LutzHorn认为稳定标识符对学生来说就像一个唯一标识符(varchar)?类似这样的东西。用户名,UUID。。。任何不会改变并且不是DB表内部自动生成ID的内容。明白了,谢谢。是的,我同意。也,您能否在线帮助我提供一些很好的参考资料,解释特别是在请求正文方面的最佳实践?如果您使用spring和angular,这里有一个简单的示例:这会增加处理请求正文时的开销吗?当您不想更改现有DB上的任何约束或处理遗留数据库时,此解决方案更有用系统和u在POST/PUT中经常需要Idrequest@Harish不,不会,因为加密几乎不需要一些时间,您可以在服务器端将其与您的JSON解析器集成。如果你需要更多的帮助,请告诉我。我已经在遗留应用程序中实现了相同的功能。是的,请详细帮助我实现此类功能。@Harish我已经更新了相同功能的概述。。将在一段时间内更新整个逻辑。但希望它能让你更清楚地了解情况。