2016-10-23 7 views
0

WebサーバーでJerseyを使用して簡単なPOSTリクエストを処理するRESTful APIを実装しました。RESTful APIへのPOSTリクエストでHTTP 400が発生する構文的に間違ったエラーメッセージ

方法は以下の通りです: - :ここ

public class PostInfo { 

     private String message; 
     private String date; 

     public PostInfo() { 

      message = null; 
      date = null; 

     } 

     /** 
     * @return the message 
     */ 
     public String getMessage() { 
      return message; 
     } 

     /** 
     * @return the date 
     */ 
     public String getDate() { 
      return date; 
     } 

     /** 
     * @param message the message to set 
     */ 
     public void setMessage(final String message) { 
      this.message = message; 
     } 

     /** 
     * @param date the date to set 
     */ 
     public void setDate(final String date) { 
      this.date = date; 
     } 

    } 

問題、私はJSON要素を持つPOSTリクエストを行うたびにある -

@Path("create") 
public class Create { 

......... 

@POST 
    @Path("/{id}") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public StatusResponse createPost(
      @PathParam("id") final String identifier, 
               final PostInfo postInfo) { 

     // Does its work 

    } 

そして次PostInfo.javaがされ結果は

HTTP Status 400 - Bad Request The request sent by the client was syntactically incorrect. 

同様の問題(thisthis)を持っているいくつかの投稿がありましたが、助けにはなりませんでした。

URL:wallpostapi.herokuapp.com/webapi/create/[email protected] 本体:ところで

{ 
    "message" : "WHADDUP DAWG???" 
    "date"  : "2016-09-09 11:00:20" 
} 
+0

私はSpringMVCを使用していません。私は使用しているジャージーをはっきりと言及しています – Auro

+2

簡単: ''メッセージ 'の後に' 'WHADDUP DAWG ???' 'を追加します。 JSONが正しくありません – Valijon

+1

おはようございます!はい!!それは問題だった..愚かな私..完全に見落とされた – Auro

答えて

1

のPUTメソッドを使用する必要がありますIDを知っていれば、あなたのJSONの構文は、不足しているコンマ正しくないURI wallpostapi.herokuapp.com/webapi/create

に行くべき。以下のJSONをお試しください。

{ 
    "message": "WHADDUP DAWG???", 
    "date": "2016-09-09 11:00:20" 
} 

また、ベストプラクティスは、名詞を使用することであるが、URIには動詞のような、

http://wallpostapi.herokuapp.com/webapi/v1/info 

IDは、オプションのパラメータとしてヘッダに送ることができない、または作成するための自動生成することができます。

id [email protected] 

あなたの作成方法の名前があるべき、

public StatusResponse createInfo(
      @HeaderParam("id") final String identifier, 
      final PostInfo postInfo { 
     // Does its work 
} 
0

:私は、次のボディと、次のURLにリクエストをするためにChromeの郵便配達員を使用してい

は、HTTP specifikationは、作成するためにPOSTをdescripesリストのサブエントリです。だから、POSTは、あなたがHTTP

関連する問題