spring bootでATNDのイベント情報取得APIを使用したときのメモ
以下のATNDに登録されているイベント情報を取得するAPIを利用。
ATND API リファレンス
service.java
/** * イベント情報をAPIから取得し、Listに格納 */ @Service public class EventInfoGetService { @Autowired @Qualifier("zipCodeSearchRestTemplate") RestTemplate restTemplate; /** 郵便番号検索API リクエストURL */ private static final String URL = "https://api.atnd.org/events/?keyword={area}&keyword={key}&count=15&format=json"; /** * リクエストを投げ,EventListBean型のlistに格納しコントローラに返す * * @return * @throws ParseException */ public List<EventListBean> service(String area, String key) throws ParseException { EventDto eventDto = restTemplate.getForObject(URL, EventDto.class, area, key); // 格納するList定義 List<EventListBean> list = new ArrayList<EventListBean>(); // listに格納 for (Map<String, EventDataDto> map : eventDto.getEvents()) { // Beanインスタンス化 EventListBean eventListBean = new EventListBean(); //listへの格納処理記載 ********* } return list; } }
あと、以下の設定を記載
RestTemplateResolver.java
@Component public class RestTemplateResolver { @Bean public RestTemplate zipCodeSearchRestTemplate() { RestTemplate restTemplate = new RestTemplate(); MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); List<MediaType> supportedMediaTypes = new ArrayList<>(messageConverter.getSupportedMediaTypes()); supportedMediaTypes.add(MediaType.TEXT_PLAIN); // text/plainのJacksonの処理対象にくわえる messageConverter.setSupportedMediaTypes(supportedMediaTypes); restTemplate.setMessageConverters(Collections.singletonList(messageConverter)); // カスタムしたHttpMessageConverterを適用 return restTemplate; } }