java - 如何在JAVA中使用API​​创建新用户

标签 java rest api

我对 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/

相关文章:

java - 字符串到哈希表

api - Azure API 管理 OAuth 2.0 资源所有者密码流客户端 ID

WCF休息: WebHost failed to Process Request

node.js - Req.body 在 node.js 中不可迭代

ios - 如何判断HTTP API请求是否来自iPad

web-services - 是否有任何带有历史事实数据库的公共(public) API?

java - 属性 key 文件中的转义 '<' '>'

java - Mapreduce 程序的输入数据

java - 列表<Map>到对象[]

java - 执行 PUT 请求时出现 HTTP 403