当前位置: 首页 > 知识库问答 >
问题:

dropwizard-giving-400-error-when-creating-new-resource using POST

秋煌
2023-03-14
public class UserProfileData {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "firstName", nullable = false)
    private String firstName;

    @Column(name = "lastName", nullable = true)
    private String lastName;

    @Column(name = "country", nullable = true)
    private String country;

    public UserProfileData() {
    }

    public UserProfileData(String firstName, String lastName, String country) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.country = country;
    }


    public long getId() {
        return id;
    }


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

    @JsonProperty
    public String getFirstName() {
        return firstName;
    }

    @JsonProperty
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    @JsonProperty
    public String getLastName() {
        return lastName;
    }

    @JsonProperty
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @JsonProperty
    public String getCountry() {
        return country;
    }

    @JsonProperty
    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof UserProfileData)) return false;

        final UserProfileData that = (UserProfileData) o;

        return Objects.equals(this.id, that.id) &&
                Objects.equals(this.firstName, that.firstName) &&
                Objects.equals(this.lastName, that.lastName) &&
                Objects.equals(this.country, that.country);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, firstName, lastName, country);
    }
}

========================================================================

DAO Method

   public UserProfileData create(UserProfileData userProfileData) {
        LOGGER.info("UserProfileData: Persisting New User");
        return persist(userProfileData);        
    }

=======================================================================

Resource Call
@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
public class UserProfileDataResource {

 @POST
    @Path("/create")
    @Consumes(MediaType.APPLICATION_JSON)
    @UnitOfWork
    public UserProfileData createUser(UserProfileData userProfileData) {
        //ResourceHelper.checkRequiredParams(requesterId);
        LOGGER.info("User created");
        return userProfileDataDAO.create(userProfileData);
    }
======================================================================

当我调用资源使用创建一个新的用户数据它给我的错误

curl-H“内容类型:application/json”-X POST-d“{”firstName:“Sachin”,“lastName:“Tendulkar”,“country:“India”}”http://localhost:8080/user/create

错误:{“代码”:400,“消息”:“无法处理JSON”,“详细信息”:null}

几乎所有的东西都试过了,但无法找出为什么会出现这个错误以及如何解决它?

共有3个答案

丁正阳
2023-03-14

您的curl请求使用引号(“”)封装JSON数据,由于JSON中的引号而中断。所以你发送给服务器的实际上是“{”。

用撇号(')代替:

curl -H "Content-Type: application/json" -X POST -d '{"firstName":"Sachin","lastName":"Tendulkar","country":"India"}' http://localhost:8080/user/create
谢英耀
2023-03-14

出现这种错误可能有几个原因。尝试将要调试的日志记录级别放入配置文件中,即:

logging:
    level: DEBUG
毕宏盛
2023-03-14

要获取有关400错误的有用信息,请在jersey上注册:

environment.jersey().register(new JsonProcessingExceptionMapper(true));

它将给出更详细的400条回复信息。

 类似资料:
  • 问题内容: I’m getting this error when creating a reddit object. Here’s the code: Here’s the error: Traceback (most recent call last): I installed praw using pip, and I’m using Windows. Any idea why I got

  • 一个合约可以通过new关键字来创建一个合约。要创建合约的完整代码,必须提前知道,所以递归创建依赖是不可能的。 pragma solidity ^0.4.0; contract Account{ uint accId; //construction? function Account(uint accountId) payable{ accId =

  • 这是我多次尝试向https://accounts.spotify.com/api/token. 范围设置为“播放列表-修改-公共,播放列表-修改-私有”。 我使用的是Python 3.7,Django 2.1.3。 无论我做什么,response_data都会返回{'error': 'invalid_client'} 我尝试了很多方法,包括按照Spotify官方文档在请求正文中传递client_i

  • 问题内容: I imported a MySQL database. All the tables where successfully imported but not the functions. The only way I can execute SQL queries is through phpMyAdmin or with a PHP script (no SSH). Here’s

  • when宏后跟一个计算为t或nil的test子句。 如果test子句被计算为nil,则不评估任何形式并返回nil,但是测试结果是t,然后执行test子句之后的操作。 宏时的语法 - (when (test-clause) (<action<sub>1</sub>) ) 例子 (Example) 创建一个名为main.lisp的新源代码文件,并在其中键入以下代码。 (setq a 100) (wh

  • Spring Boot CLI可用于创建一个新项目,使用init命令将maven作为默认构建工具。 Maven将使用https://start.spring.io服务。 在下面的示例中,我们将使用百日咳创建一个Web应用程序。 转到E:\Test文件夹并键入以下命令 - E:/Test> spring init --dependencies = web,thymeleaf MavenApplica