2017-05-15 10 views
0

私は驚くばかりSpringとJavaに慣れていますが、Easy Rulesでいくつかのルールの検証のためにいくつかのコードを消費しようとしていますが、SpringでのRESTサービスの使用

@RequestMapping(method = {RequestMethod.GET}, value = "author/field", produces= MediaType.APPLICATION_JSON_VALUE) 
public @ResponseBody ResponseEntity<Enum> getField(@RequestParam(value="field", required=true) String field){ 
    Enum enum = mongoService.findByField(field); 
    if(enum == null){   
     return new ResponseEntity<Enum>(HttpStatus.NO_CONTENT);  
    }else{ 
     return new ResponseEntity<Enum>(enum,HttpStatus.OK); 
    } 
} 

は、だから私のような何かをしようとしている:

import com.mongoservice.Enum 
import com.mongoservice.Enums 

RestTemplate restTemplate = new RestTemplate(); 
String uri = "http://localhost:9000"; 

//This is my confusion 
List<Enums> response = restTemplate.getForObject(uri + 
"/author/field?={field}", Enum.class,"a").getEnums(); 
    String value = response.getValue().toString().trim(); 

//this is the record i'm checking against that is pulling a specific string value and what i'm expecting 
    String record = "a"; 

    return (value == record); 

私は引き戻すしようとしているJSONデータは次のようにモデル化されているが、私は、レコードのいずれかと等しいことを確認する検証する必要があります値列挙型[] json配列

{ 
    "field": "a", 
    "descriptor": "blah", 
    "enums": [ 
    { 
     "value": "h", 
     "description": "blah" 
    }, 
    { 
     "value": "e", 
    "description": "blah" 
}, 
{ 
    "value": "l", 
    "description": "blah" 
}, 
{ 
    "value": "p", 
    "description": "blah" 
} 
    ] 
} 

答えて

1

あなたが見ている問題は、ちょうど一致しないことですか?そうであれば、String.equalsの代わりに==を使用している可能性があります。コードを変更してください:

return record.equals(value); 

Java String.equals versus ==を参照してください。

+0

デバッグ時にRestTemplateを正しく使用しているかどうかを調べるために、「ソースが見つかりません」というメッセージが表示されています。これはおそらくサービスと関係がありますが、呼び出されたjsonを正しく転送して、最後のチェックで比較します。 – lion

+0

その場合、次のように変更すると動作します: 'String uri =" http:// localhost:9000/author/field?field = {field} "' –

+0

hm。 – lion

1

あなたは

String uri = "http://localhost:9000"を変更すると、それはあなたのコントローラの説明どおりauthor/field?field={field}ようにする必要があり、パス変数名fieldを逃したことができます。

+0

ええ、通常は実行中のサービスにヒットしようとしていますが、今はコード補完のためにローカルで実行しています。 – lion

+0

これは問題ではありません。あなたはuriの 'http://'部分を見逃していると思います。 – Zico

+0

ああ、それは私のせいです、私はちょうど質問にそれを入力しませんでした。私のコードでは、httpの部分があります。私はそれを指摘してくれてありがとう、編集します。 – lion

関連する問題