벌써 3주차!!

☑️ 코드 리뷰 하기
☑️ api 문서 작성
☑️ 업무 분담하기(새로오신 분)
[kioskType/zero] 가 생성된다.getReleaseNote에서, FileNotFoundException 잡을 시 해당 파일이 없다고 판단, "" 빈 스트링 제공☑️ 프로젝트 api화 하기 (타임리프 제거)
☑️ api 문서 작성
☑️ CS 스터디 - 데이터베이스
☑️ 오전 요청사항 처리
☑️ BaseTime Entity - 시간 포맷 변경
☑️ 쉘스크립트 작성프로젝트 api화 하기 (타임리프 제거)
챗지피티 :
@Controller와 @RestController의 차이점은 주로 반환하는 값에 있습니다.
@Controller
- View를 반환하는 컨트롤러로 사용됩니다.
메서드에서 반환하는 값은 View의 이름이며, Spring MVC는 이를 찾아서 반환합니다.@Controller public class MyController { @GetMapping("/example") public String example() { return "exampleView"; // 이 부분은 실제 View의 이름입니다. } }
@RestController
- JSON이나 XML과 같은 데이터를 반환하는 API 컨트롤러로 사용됩니다.
메서드에서 반환하는 값은 HTTP 응답의 본문(Body)에 직접적으로 들어갑니다. 주로 객체나 데이터를 JSON으로 변환해서 전송합니다.@RestController public class MyRestController { @GetMapping("/api/example") public String example() { return "This is an example response"; // 이 부분은 직접 응답 본문에 들어갑니다. } }
주의: @RestController를 사용하면 기본적으로 모든 메서드의 리턴값은 @ResponseBody 어노테이션이 적용된 것으로 간주됩니다. 이는 메서드에서 반환하는 값을 HTTP 응답 본문으로 사용한다는 의미입니다.
아이디
타입
패키지
릴리즈
최신버전(name)
수정시간
"code": 200,
"message": "",
"result": {
"content": [
{
"kioskType": "now",
"version": "d",
"packageName": "now",
"releaseNote": "d",
"modifiedAt": "2024-01-29T17:37:21"
},
{
"kioskType": "version",
"version": "release",
"packageName": "release",
"releaseNote": "version3",
"modifiedAt": "2024-01-29T15:34:24"
},
버전명
릴리즈
apk 경로 //<a태그>용 url 반환하는apk 존재
kiosk_id
키오스크 타입
// 20240130121812
// http://localhost:8080/kiosk_update/admin/kiosk/info/now
{
"code": 200,
"message": "",
"result": {
"kioskInfo": {
"modifiedAt": "2024-01-29T17:37:21",
"kioskInfoId": 28,
"kioskType": "now",
"version": "d",
"packageName": "now",
"releaseNote": "d"
},
"versionInfos": [
{
"filename": "d",
"releaseNote": "d"
},
{
"filename": "werwer",
"releaseNote": "erewer"
}
]
}
}
사업자번호
키오스크 타입
bussiness_id
code": 200,
"message": "",
"result": {
"content": [
{
"businessInfoId": 8,
"businessNumber": "8080808080",
"kioskType": ""
}
],
"pageable": {
"sort": {
"empty": true,
"sorted": false,
"unsorted": true
},
"offset": 0,
"pageNumber": 0,
"pageSize": 10,
"paged": true,
"unpaged": false
},
기존사항
시간 포맷으로 JsonFormat 사용. 그러나 적용 안됨
때문에 디폴트값 "modifiedAt": "2024-01-29T17:45:31"으로 표현
변경사항
시간 포맷 yyyy-MM-dd HH:mm:ss 으로 변경 후
재배포
(json전달을 위해 필요한 Jsacson의) JsonFormat
Response (서버 -> 클라이언트) 로 전달할 때에는 @JsonFormat 을 사용,
Request(클라이언트 -> 서버)로 전달할 때는 @DateTimeFormat 을 사용한다.
출처 : https://footprint-of-nawin.tistory.com/68
=> 결국 @DateTimeFormat 안됨. 직접 format형식 지정
modifiedAt = this.modifiedAt?
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
clean - build - .war생성 및 ROOT.war로 이름 변경
echo "@@@@ build artifacts start : @@@@"
echo "===> wrapper : "
#참고로 여기서 에러난다면 직접 wrapper, build후 다시 실행
./gradlew wrapper
echo "===> build : "
./gradlew build -x test
# 만약 artifacts 디렉토리가 존재하지 않는다면 생성
echo "===> mkdir ROOT : "
mkdir -p out/artifacts/ROOT
echo "===> copy ROOT.war : "
echo "===> build artifacts st : "
cp build\libs\KioskUpdateApi-1.0.1.war out\artifacts\ROOT\ROOT.war
echo "===> build artifacts success : "
echo "@@@sleep 10 sec, but mean nothing@@@"
sleep 10
ftp 연결 - ROOT.war 파일 업로드 ( 작동안됨 )
LOCAL=out/artifacts/ROOT
#ftp 접속하려는 호스트, 유저명, 비밀번호
HOST={HOST}
USER={USER}
PASS={PASSWORD}
# 로컬로 가져오고 싶은 파일명과 파일이 있는 디렉토리 경로
DIR=tomcat/webapps-javaee
FILE=out/artifacts/ROOT/ROOT.war
echo "접속합니다"
#ftp에 접속
ftp -inv $HOST << sess
quote opts utf8 on
prompt
user $USER $PASS
cd $DIR
put $FILE
bye
sess
echo "접속종료"
git bash나 터미널에 한줄씩 입력하면 잘되는데 upload.sh를 실행하면 안된다
오후에는 5시간동안 쉘스크립트만 쓰고 있었더니 머리가 터질것같다🤯🤯🤯
챗지피티랑 열심히 고민했는데..잘안된다.... 결국 ftp랑 ssh는 수동으로 해야할듯 ㅠㅠㅠ!!!!
☑️POST 메서드 api화
☑️ 현장실습 제출 서류 작성
☑️ 소마 1번 항목 쓰기
☑️ 엠로 1번 쓰기
밀린 현장실습 후기쓰기
포트폴리오 한장만들기(현장실습꺼)
feat : [POST] createKioskInfo api화 #10
feat : [POST] updateKioskInfo api화 #10
feat : [POST] createBusinessInfo api화 #10
feat : [POST] updateBusinessInfo api화 #10
refactor : upload Apk 함수 에러 처리 코드 리팩토링 #10
아주 금방 끝냄 ㅎㅎ
api문서 적기 귀찮지만 점심먹기 전까지 끝내본다->완
귀찮지만.. 오전에 할일을 어느정도 끝내서 오후에 여유롭게 작성완료!!
@Controller에서 .html 명시해주기/static/은 왜인지 경로로 인식하지 않았음스프링부트는 static 폴더가 기본 경로로 지정이 되어있기 때문에 static 밑의 경로만 써주면 됩니다.
또한 위에 나와있는 디렉토리에 있는 정적 웹 리소스를 자동으로 추가한다고 합니다
https://wonin.tistory.com/470

일도 없다..
돈도없고..
☑️ api 문서 안쓴거 찾아서 쓰기
☑️ api화 안끝난거 찾기
☑️ 엠로 2번쓰기
☑️ 소마 2번 쓰기
[보안] 로그인 횟수 제한

failureHandler를 등록할때 고생했는데..ㅠㅠㅠ 자바 문법을 코틀린으로 번역하다 타입지정을 nullable안해줘서 계속 에러가 났었다.....ㅠ
겨우해결하고,
이메일 발송은 내일하기로!