2016-04-27 12 views
1

Google ProtoBuf形式のリクエストを処理するSpring Bootを使用してAPIサービスを作成しました。私の要求は、application-json formatのように受け入れヘッダで私のサービスにアクセスするたびにです。proto-buf-java Format(protoオブジェクトとの間でJSON文字列を変換するライブラリ)を使用して、レンダリングされたprotoオブジェクトをJSON形式に変換します。ユーザーがapplication/x-protobufフォーマットにヒットするたびに、springはprotobufHTTPMessageConverterを必要なフォーマットに変換しますが、ユーザーがJsonフォーマットにヒットしたときには、デフォルトのJacksonMapperを使用し、JsonStringに変換できませんでした。私はSpring Bootを新しくしました。私はJSONフォーマットにも対応するメッセージコンバータを構成するソリューションが必要です。メッセージを必要な形式に変換するには、SpringブートでhttpMessageConvertersをどのように設定する必要がありますか?

+1

https://github.com/making/spring-mvc-tutorial-protobufなどの基本的なチュートリアルを再現しようとしましたか?あなたが立ち往生している場合、いくつかのコード、ランタイムエラーメッセージを提供してください... –

+0

ありがとう、私はpom.xmlのProtobuf Javaフォーマットの依存関係を追加するのを忘れました。このライブラリを管理している人はいますか?http://mvnrepository.com/artifact/com.googlecode.protobuf-java-format/protobuf-java-format/1.2。このライブラリはprotosをJsonに変換するのに使いやすいですか? – Manu

+0

このライブラリの所有者の名前とメールは、リンクしたページの下部に表示されます。 –

答えて

0

以下のクラスを追加してください。 AutoBanをオンにしていると仮定して、SpringBootはそれをスキャンする必要があります。 APIのリクエストでは、デフォルトでJSONにシリアル化されたオブジェクトが返されるか、& mediaType = jsonを追加してリクエストしてください。

@EnableWebMvc 
@Configuration 
public class CustomConfig extends WebMvcConfigurerAdapter 
{ 
    @Override 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) 
    { 
     MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); 
     mappingJackson2HttpMessageConverter.setPrettyPrint(true); 
     mappingJackson2HttpMessageConverter.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY); 
     converters.add(mappingJackson2HttpMessageConverter); 
    } 

    @Override 
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) 
    { 
     configurer.defaultContentType(MediaType.APPLICATION_JSON); 
     configurer.favorPathExtension(false); 
     configurer.favorParameter(true); 
     configurer.ignoreAcceptHeader(true); 
     configurer.useJaf(false); 
     configurer.parameterName("mediaType"); 
     configurer.mediaType("json", MediaType.APPLICATION_JSON); 
    } 
} 
関連する問題