2016-08-23 9 views
0

JSONがPostmanを介して渡されるときにJSONを解析し、オブジェクトを生成するために使用される関数が存在します。オブジェクトは、GSONライブラリの助けを借りてJSONとして返されます。JSONをJava/Springアプリケーションで使用する場合のスラッシュの処理方法は?

それは素晴らしいことだが、ニーズに取り込まれますクラスの変数の一つが(すなわち/some/addressを解析し、私のクラスのメンバーcustomer_urlに割り当て、ユーザーcustomer_url : /some/addressに戻り)スラッシュを扱う

することができるようにします

これは、/が要求のどこでも使用されている場合、を除くすべての入力に対して有効です。

http://localhost:8080/myApp/myInterface/populate/someObject/{"SOME_RANDOM_FIELD_TO_EXTRACT_STUFF_FROM": "/some/address" }

そして、それは404 NOT FOUNDエラーを返します。次に例を示します。私はそこにも間違いを犯してすることができるならばここで

は私のコントローラの私のバックエンドのコードです:

@RequestMapping(value = "/populate/someObject/{json}", method = RequestMethod.PUT, headers = "Accept=application/json", produces = { 
      "application/json; charset=UTF-8" }) 
    @ResponseBody 
    public ResponseEntity<String> getPopulateAndReturn(@PathVariable("json") String json) { 
     JsonService jsonService = new JsonService(); 
     MyClass obj = populateThis(jsonService.convertJsonInputToJsonObject(json)); 
     Gson gson = new Gson(); 
     return new ResponseEntity<String>(gson.toJson(obj), HttpStatus.OK); 
    } 

私は関連の質問を見てきたが、どれも解決に私を導くも理解することができませんでした問題はより良い。

+5

これは...通常ではありません。通常、JSONはリクエスト本体として提供されます。 – chrylis

+0

@chrylis私が見ることができるすべての例?私はいくつかを検索しようとしましたが、あなたが何を意味するのかはっきりしていませんでした(JSON形式でデータを公開するAPIを構築する初心者) – abhi

+0

@chrylisが見つかりました。それを指摘していただきありがとうございます! – abhi

答えて

0

私はこれを逃したとは思わない。

したがって、バックエンド関数がRequestMethodとやり取りする方法に問題があります。ここではいくつかの方法でアプリケーションにJSONを送信し、それを使用してアプリケーションの仕事を持っている正しい関数である:

@RequestMapping(value = "/populate/someObject", method = RequestMethod.PUT, headers = "Accept=application/json", produces = { 
     "application/json; charset=UTF-8" }) 
@ResponseBody 
public ResponseEntity<String> getPopulateAndReturn(@RequestBody String json) { 
    JsonService jsonService = new JsonService(); 
    MyClass obj = populateThis(jsonService.convertJsonInputToJsonObject(json)); 
    Gson gson = new Gson(); 
    return new ResponseEntity<String>(gson.toJson(obj), HttpStatus.OK); 
} 

は、要求内の任意/(スラッシュ)を投入して期待どおりに動作します。

@RequestBodyを使用してJSONリクエストを取得する必要があります。 JSON入力はURLに直接入力しないでください(これを指摘してくれてありがとう、@chrylis)。

ポストマンを使用して、 Bodyカテゴリをクリックして、そのようにそこにあなたのJSON入力を貼り付けます。

PUT request with Postman

無視PUT要求を使用しているにもかかわらず、バックオブジェクト自体の戻り。テストして、何も間違っていないことを確認したい。ベストプラクティスの努力の中で、それはちょうど適切なHttpStatusを返さなければなりません(私が間違っていれば私を修正してください)。

関連する問題