我对 JAVA 非常陌生,我需要创建一个基于 HTTP 的 RESTful API SMP,我正在开发第一个 API,它需要创建一个用户并将其插入数据库。我已经在MYSQL中创建了数据库和表。我在网上找到了一些示例代码,我试图将其更改为我需要的功能,但它不起作用,没有错误,只是没有将任何内容放入数据库中。下面是具有预期输出的 API 的描述以及我迄今为止拥有的代码。不是完整的代码,只是此 API 的代码。因此,任何关于我做错了什么以及需要做什么才能让他工作的帮助都会很棒。另外,在 API.java 中,我需要放置每个端点,并添加在 DBEngine.java 中执行 SQL 函数的辅助函数。
/api/createuser // create a new Instatwitsnapbook user
// Input: curl -d '{"handle":"@cooldude42", "password":"mysecret!", "fullname":"Angus Mize", "location":"Kentucky", "xmail":"none@nowhere.com", "bdate":"1970-07-01"}' -H "Content-Type: application/json" -X POST http://localhost:9990/api/createuser (Links to an external site.)
// Output: {"status":"4"} // positive number is the Identity.idnum created.
// Output: {"status":"-2", "error":"SQL Constraint Exception"}. [EDIT 04/14]
// etc.
API.java
@GET
@Path("/createuser")
@Produces(MediaType.APPLICATION_JSON)
public Response createuser() {
String responseString = "{}";
try {
Map<String, String> teamMap = Launcher.dbEngine.getUsers();
responseString = Launcher.gson.toJson(teamMap);
} catch (Exception ex) {
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
String exceptionAsString = sw.toString();
ex.printStackTrace();
return Response.status(500).entity(exceptionAsString).build();
}
return Response.ok(responseString)
.header("Access-Control-Allow-Origin", "*").build();
} // createuser
DBEngine.java
public Map<String,String> createuser() {
Map<String,String> userIdMap = new HashMap<>();
PreparedStatement stmt = null;
try
{
Connection conn = ds.getConnection();
String queryString = null;
queryString = "INSERT INTO Identity (handle, password, fullname, location, xmail, bdate)";
stmt = conn.prepareStatement(queryString);
// No parameters, so no binding needed.
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
//String userId = Integer.toString(rs.getInt("idnum"));
String handle = rs.getString("handle");
String password = rs.getString("pass");
String fullname = rs.getString("fullname");
String location = rs.getString("location");
String xmail = rs.getString("email");
String bdate = rs.getString("bdate");
userIdMap.put(handle, password, fullname, location, xmail, bdate);
}
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
return userIdMap;
} // createuser()
最佳答案
如果您想实现这一目标:
/api/createuser // create a new Instatwitsnapbook user
// Input: curl -d '{"handle":"@cooldude42", "password":"mysecret!", "fullname":"Angus Mize", "location":"Kentucky", "xmail":"none@nowhere.com", "bdate":"1970-07-01"}' -H "Content-Type: application/json" -X POST http://localhost:9990/api/createuser (Links to an external site.)
// Output: {"status":"4"} // positive number is the Identity.idnum created.
// Output: {"status":"-2", "error":"SQL Constraint Exception"}. [EDIT 04/14]
// etc.
那么您的 API 中需要 POST 方法而不是 GET。 API 教程 here
关于java - 如何在JAVA中使用API创建新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61529715/