技術メモ1年目

技術のメモ

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;
    }
}