繁体   English   中英

使用Spring Boot和AWS的简单POST请求

[英]Simple POST request using Spring Boot and AWS

我想制作一个简单的应用程序,将用户数据(名称和密码)存储到数据库中。 为此,我创建了EC2和RDS实例。 我在与RDS通讯的EC2上运行Spring Boot应用程序。 我的用户类如下所示:

@Entity
@Table(name="users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private long id;
    @Column(name="name")
    private String name;
    @Column(name="password")
    private String password;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

我希望能够在EC2本地主机上进行GET和POST请求,因此添加了必要的存储库类:

@RepositoryRestResource(collectionResourceRel = "usertest", path = "usertest")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
}

现在,我应该能够像这样在我的SQL数据库中添加一个条目:

curl -H "Content-Type: application/json" -X POST -d '{"id": "102", username":"john", "password":"xyz"}' http://localhost:8080/usertest

但是,我收到以下错误消息:

{"timestamp":1482172780645,"status":500,"error":"Internal Server Error","exception":"org.springframework.dao.InvalidDataAccessResourceUsageException","message":"could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet","path":"/usertest"}

如果删除“ id” json字段,则会收到相同的消息(因为它应该自动递增)。

我有一个AppConfig类,其中包含有关RDS实例和标准主类的配置详细信息:

@SpringBootApplication
@EnableJpaRepositories
public class Application {
        public static void main(String[] args) throws Exception {
            SpringApplication.run(Application.class, args);
        }
}

我还附加了EC2实例与RDS实例“对话”所需的安全组。 有什么想法为什么我不能做这个简单的POST? 感谢任何帮助。

错误消息很奇怪,我期待的是

Unexpected character

问题的根源肯定是在您的卷曲中,您的消息中缺少用户名之前的双引号。 正确的方法如下:

curl -H "Content-Type: application/json" -X POST -d '{"id": "102", "username":"john", "password":"xyz"}' http://localhost:8080/usertest

我猜您正在ec2实例中执行curl命令,因为您使用的是localhost:8080。 您确定可以访问正确的数据库吗? 您的项目在您的本地环境中工作吗(也许使用h2database)?

还有一件事情:作为第一步,您应该检查(并发布)stacktrace,REST响应中的消息还不够。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM