업무 기록/API 11

카카오 API 를 통한 API 개발 및 웹 단 출력

이번에는 카카오 API 를 통해 내가 만든 프로그램에서 등록한 내용을 카카오에 저장 후 웹단에 헤당 내용을 뿌려주는 예제이다. 이를 사용하기 위해서는 먼저 허브파트너로 허용된 IP로 접근이 가능해야 해볼 수 있는 예제이다. Open API 와는 다른 내용이다. 그러므로 자세한 URL이나 코드 변수는 많이 변경되고 생략된 내용을 연습삼아 만들어본 관련없는 내용이다. 많이 생략된 내용이지만 순전히 기억을 위해 작성을 하였다. 자세한 설명은 차 후 해보겠다. 먼저 API 규격서를 보고 postman을 이용해 해당 값이 잘 나오는지 확인을 하였다. 차단정보 웹단에 출력할 내용을 blockinfo로 정의하였다. window.fncChannelInfo = function(data) { $("#tagToken").e..

업무 기록/API 2023.11.28

프로젝트 요약 정리 SpringBoot 와 Redis 연결 및 업데이트

들어가며 회사에서 URL 호출 방식의 API로 짧은 시간에 다량의 내용을 보내는 부분이 있다. 기존 웹서버는 jsp로 구현된 내용을 이번에 Spring Boot와 Node Expressjs 를 이용하여 DB와 Redis에 새로운 인증 API 키를 갱신하는 기능을 개발하게 되었다. 초기 Redis 값을 가저와 해당 필요한 부분만 Update 를 하는 방식을 생각하였지만 여러 문제가 있어 Json 형태의 Redis를 읽어와 해당 새로운 키 값을 만들고 가저온 정보에서 해당 필요 내용을 수정해 새로운 key, value를 만들기로 하니 여러 시행착오 끝에 문제를 해결할 수 있었다. Redis Config 여기서는 Redis Sentinel 및 Lettuce를 사용하여 Redis 데이터베이스의 고가용성을 확보하..

업무 기록/API 2023.10.25

postman randomInt 랜덤값 사용법

대량 API 테스트하는 경우 Run Collection은 동일한 내용을 반복하거나 JSON, CSV 파일들에서 데이터를 받아와서 반복을 돌려야 한다. 그렇지 않으면 그저 동일한 내용을 반복할 뿐이다. 여기서 DB에 데이터를 넣는데 PK가 중복이 되면 문제가 생긴다. 그렇기 때문에 나는 {{$randomInt}}를 사용하여 pk가 중복이 되지 않게 할것이다. ✔ 배경 이전에는 1개의 API 마다 1만번의 테스트를 실행해야 하는데 PK 중복 문제로 mockaroo라는 사이트에서 더미 데이터를 랜덤으로 만들고 해당 변수의 조건을 맞춰 생성을 할려고 하니 무료버전은 한번에 1000개의 데이터만 생성이 가능하고 총 30만 이상의 테스트를 돌리려고 하니 최소 300번을 더미 데이터를 만들거나 개발을 해서 더미 데이..

업무 기록/API 2023.08.19

POSTMAN API 대량 발송 자동 테스트 Run collection 사용

기업에서 송수신을 많이하는 경우 예를들어 송신 API를 대량으로 한 API를 몇만번 시도하고 평균속도 정확성 등을 판단하는 경우가 있다. 이 때 간편하게 대량의 정보를 포스트맨에서 쉽게 테스트하는 방법이다. ✔ Run collection 이동 방법 대량 반복 발송할 폴더의 점 3개를 클릭하게 되면 모달창이 나오고 Run collection을 클릭하면 된다. ✔ 테스트 API 선택 해당 폴더에 API 가 나오게 되고 여기서 원하는 부분만 선택을 하자 ✔ 선택 및 반복 횟수 선택 반복 횟수(Iterations)를 선택하고 Run[Test]API_Sender 를 클릭한다. ✔ 진행 과정 위에 같이 성공 여부, 시간, 어떤 것인지 몇 번인지 등 확인 할 수 있다. 더 자세히 알고 싶으면 우측 상단에 있는 Exp..

업무 기록/API 2023.08.18

POSTMAN JSON Import/Export API TEST

✔ JSON import좌측 NEW 옆에 IMPORT 클릭 → 원하는 방식 클릭(여기서는 Raw text 방식) → Paste raw text 안에 Json을 작성 → Continue NAME, FORMAT, IMPORT AS 확인 후 주황색 Import 클릭   ✔ 결과자동으로 Json 형식에 맞게 Import되어 Test간 효율적임  ✔ 참고 코드 "item": [ { "name": "v1", "item": [ { "name": "SMS전송", "request": { "method": "POST", "header": [ { "key": "ApiKey", "value": "{{apikey}}", "type":..

업무 기록/API 2023.08.17

API 원격 서버 이미지 업로드(IP동시, Jsch, sftp)

✔ 원격 서버의 IP 주소를 설정 try { // init Server info String host_ip = HostAPI1; if(host_ip.equals(InetAddress.getLocalHost())) { host_ip = HostAPI2; host_ip와 로컬 호스트 IP 주소를 비교한다. 만약 두 값이 동일하다면, 즉 로컬 호스트에서 실행 중인 경우라면 host_ip 값을 HostAPI2로 변경한다. 이는 로컬 호스트에서 실행 중일 때는 다른 서버로 접속하기 위해 대체 IP 주소를 사용하는 것이다. ✔ JSch 객체 생성 JSch jsch = new JSch(); ?* com.jcraft jsch 0.1.54 maven dependency 설정*/ JSch 객체를 생성, JSch는 Java..

업무 기록/API 2023.07.12

Spring API 이미지 자동 삭제

✔ 1년간 보관 - 1년 후 삭제 기간 설정 private long getOneYearInMills() { final int millisecondsInSecond = 1000; final int secondsInMinute = 60; final int minutesHour = 60; final int hoursInDay = 24; final int daysInYear = 365; return millisecondsInSecond * secondsInMinute * minutesHour * hoursInDay * daysInYear; } getFiveMinutesInMills 메소드 생성, 1년을 밀리초로 변환하여 반환하는 메서드이다. 저장/삭제 예약 private void saveAndScheduleDe..

업무 기록/API 2023.06.18

Spring 이미지 업로드 (파일생성, 난수, 경로 설정)

✔ 이미지 저장, 경로, 파일이름 // 이미지 저장, 경로, 파일이름private String saveImage(MultipartFile image, String storagePath, String filename, String type) { try { String savePath = UPLOAD_DIRECTOR_STRING + storagePath; File storageDirectory = new File(savePath); if(!storageDirectory.exists()) { storageDirectory.mkdirs(); // 파일 경로가 없는 경우 디렉토리를 생성 } File imageFile = new File(storageD..

업무 기록/API 2023.06.17

Spring 이미지 업로드 API 설계

✔ 이미지 업로드 API (ServiceImpl) - 기본 틀 (이미지가 없는 경우) @Override public JsonElement uploadImageImageVO image) { StopWatch watch = getStopWatch(); MultiValueMap params = new LinkedMultiValueMap(); try { if (image.getImage() == null) { return JsonParser.parseString(new Gson().toJson(new ResponseWithMessageVO(ApiCommonCode.ILLEGAL_PARAMETER, "이미지는 필수 항목입니다."))); } - 파일 형식 지정해주기 (조건) // 업로드된 이미지 파일 가져오기 Mu..

업무 기록/API 2023.05.26

SpringBoot 메세지 발송/조회 API 설계 2 (Entity, DB, Controller, Service, POSTMAN)

✔ Entiry, DB 이 코드는 lombok 어노테이션을 사용하여 자동으로 생성되는 생성자, 게터, 세터 등을 포함하는 Java 클래스입니다. •@Data: @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor 어노테이션을 포함하는 대표적인 롬복 어노테이션입니다. 이 어노테이션을 사용하면 클래스에서 필요한 메소드들을 자동으로 생성해줍니다. •@Builder: 객체를 생성하면서 값들을 설정하는데 사용되는 빌더 패턴을 쉽게 사용할 수 있도록 도와주는 롬복 어노테이션입니다. •@AllArgsConstructor: 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성하는 롬복 어노테이션입니다. •@NoArgsConstructor:..

업무 기록/API 2023.05.19

SpringBoot 메세지 발송/조회 API 설계 1 (요구사항, 사용기술, application.properties, Log4j)

✔ 프로젝트 요구사항과 필요성 ✔ Maven 사용기술 부연설명 - •log4j-core는 로깅 프레임워크의 구현입니다. 로거 생성 및 관리, 로그 이벤트 처리, 적절한 어펜더에 로그 메시지 발송과 같은 로깅의 핵심 기능을 제공합니다. 또한 다른 대상에 로그를 작성하는 데 사용할 수 있는 구성 가능한 추가기 세트를 제공합니다. •log4j-api는 개발자가 로깅 프레임워크와 상호 작용하는 데 사용하는 API입니다. 개발자가 로거를 만들고 메시지를 기록하고 로깅 시스템을 구성하는 데 사용하는 로깅 인터페이스와 클래스를 제공합니다. 타사 라이브러리에서도 사용하도록 설계되어 Log4j 로깅 시스템과 통합할 수 있습니다. ✔ application.properties 부연설명 - 1.여기에서는 테스트 서버접속과, ..

업무 기록/API 2023.05.18