: 번역할 내용, 번역할 언어 코드, 번역될 언어 코드를 전달하면 Papago Translation 엔진에서 번역한 결과를 반환하는 REST API
curl -i -X POST \
   -H "X-NCP-APIGW-API-KEY-ID:{앱 등록 시 발급받은 Client ID}" \
   -H "X-NCP-APIGW-API-KEY:{앱 등록 시 발급 받은 Client Secret}" \
   -H "Content-Type:application/json" \
   -d \
'{
  "source": "{원본 언어 코드}",
  "target": "{번역 결과 언어 코드}",
  "text": "{번역할 text}"
}' \
 'https://naveropenapi.apigw.ntruss.com/nmt/v1/translation'
파라미터 정보: https://api.ncloud-docs.com/docs/ai-naver-papagonmt-translation
@Component
public class PapagoConfig {
    @Value("${PAPAGO-TRANSLATE-KEY}")
    private String apiKey;
    @Value("${PAPAGO-TRANSLATE-ID}")
    private String apiId;
    public static final String
            CONTENT_TYPE = "application/json;";
    public static final String KEY_NAME = "X-NCP-APIGW-API-KEY";
    public static final String ID_NAME = "X-NCP-APIGW-API-KEY-ID";
    public static final String source = "ko";
    public static final String target = "en";
    public static final String URL = "https://naveropenapi.apigw.ntruss.com/nmt/v1/translation";
    public String getApiKey() {
        return apiKey;
    }
    public String getApiId() {
        return apiId;
    }
}
@Getter
@Setter
public class PapagoMessage {
    @JsonProperty("result")
    private PapagoResult result;
}
@Setter
@Getter
@NoArgsConstructor
public class PapagoRequestDto {
    @JsonProperty("text")
    private String text;
    @JsonProperty("target")
    private String target;
    @JsonProperty("source")
    private String source;
    @Builder
    public PapagoRequestDto(String text, String target, String source) {
        this.text = text;
        this.target = target;
        this.source = source;
    }
}
@Getter
@Setter
public class PapagoResponseDto {
    @JsonProperty("message")
    private PapagoMessage message;
}
@Setter
@Getter
@NoArgsConstructor
public class PapagoResult {
    @JsonProperty("translatedText")
    private String translatedtext;
    @JsonProperty("tarLangType")
    private String tarlangtype;
    @JsonProperty("srcLangType")
    private String srclangtype;
    @Builder
    public PapagoResult(String translatedtext, String tarlangtype, String srclangtype) {
        this.translatedtext = translatedtext;
        this.tarlangtype = tarlangtype;
        this.srclangtype = srclangtype;
    }
}
@Service
@RequiredArgsConstructor
public class PapagoService {
    private final PapagoConfig papagoConfig;
    private static RestTemplate restTemplate = new RestTemplate();
    public String textTranslation(String text) {
        PapagoRequestDto papagoRequestDto = PapagoRequestDto.builder()
                .source(PapagoConfig.source)
                .target(PapagoConfig.target)
                .text(text).build();
        PapagoResponseDto papagoResponseDto = this.getResponse(buildHttpEntity(papagoRequestDto));
        return papagoResponseDto.getMessage().getResult().getTranslatedtext();
    }
    private HttpEntity<PapagoRequestDto> buildHttpEntity(PapagoRequestDto papagoRequestDto) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType(PapagoConfig.CONTENT_TYPE));///?
        headers.add(PapagoConfig.KEY_NAME,papagoConfig.getApiKey());
        headers.add(PapagoConfig.ID_NAME,papagoConfig.getApiId());
        return new HttpEntity<>(papagoRequestDto, headers);
    }
    public PapagoResponseDto getResponse(HttpEntity<PapagoRequestDto> papagoRequestDtoHttpEntity) {
        ResponseEntity<PapagoResponseDto> responseEntity = restTemplate.postForEntity(
                PapagoConfig.URL,
                papagoRequestDtoHttpEntity,
                PapagoResponseDto.class);
        return responseEntity.getBody();
    }
}