묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
/study/path 검증실패시 리다이렉트 처리에 대한 궁금증
강의와 같은 뷰 템플릿에서 보내는 post요청입니다. 기존 Post /study/path 의 경우 @PostMapping("/study/path") public String updateStudyPath(@CurrentUser Account account, @PathVariable String path, @RequestParam String newPath, Model model, RedirectAttributes attributes) { Study study = studyService.getStudyToUpdateStatus(account, path); if (!studyService.isValidPath(newPath)) { model.addAttribute(account); model.addAttribute(study); model.addAttribute("studyPathError", "해당 스터디 경로는 사용할 수 없습니다. 다른 값을 입력하세요."); return "study/settings/study"; } studyService.updateStudyPath(study, newPath); attributes.addFlashAttribute("message", "스터디 경로를 수정했습니다"); return "redirect:/study/" + getPath(newPath) + "/settings/study"; } 같은 이름의 경로 요청시, 변경이 불가한 메세지를 나타내고, 페이지는 /study//settings/study를 나타내지만 주소창은 post요청의 영향으로 추가적으로 path가 더 붙는 것을 확인했습니다.이상태에서 의도적일순 있으나 URL자체로 요청을 보내는 경우 /path가 붙은 Get요청을 하게되면 아래와 같은 화면을 보게 됩니다.따라서 해당 문제점을 해결하기 위해 아래 처럼 변경하였습니다. @PostMapping("/study/path") public String updateStudyPath(@CurrentUser Account account, @PathVariable String path, @RequestParam String newPath, Model model, RedirectAttributes attributes) { Study study = studyService.getStudyToUpdateStatus(account, path); if (!studyService.isValidPath(newPath)) { model.addAttribute(account); model.addAttribute(study); attributes.addFlashAttribute("studyPathError", "해당 스터디 경로는 사용할 수 없습니다. 다른 값을 입력하세요."); return "redirect:/study/" + getPath(newPath) + "/settings/study"; } studyService.updateStudyPath(study, newPath); attributes.addFlashAttribute("message", "스터디 경로를 수정했습니다"); return "redirect:/study/" + getPath(newPath) + "/settings/study"; }기존의 model에 추가한 attribute는 리다이렉트 요청시 없어지기 때문에 메세지 출력에 필요한 studyPathError는 FlashAttirbute로 변경해주었습니다. 잘못된 경로변경 요청시 결과입니다.redirect 결과로 /path가 붙어 나오지 않음 이 경험으로 위와 같은 상황에서는 Post요청으로 Redirect가 더 안전(?)하다고 생각했습니다.하지만 매번 Redirect시킬수는 없을 것 같은데 존재하지 않는 API의 경우에 기준 URL로 리다이렉트 시키나요?예를 들자면/study/path/settings/study/path 의 경우에 /study/path/settings처럼예상되는 url들의 경우 getMapping으로 다중처리하는 걸까요?
-
미해결Vue.js 끝장내기 - 실무에 필요한 모든 것
유닛테스팅 로그인폼 undefined
안녕하세요.선생님이 알려주신 속성들을 이용해서 똑같이 테스팅을 했는데요. 유저네임 관련해서 테스팅을 하는 도중에 isusernameValid 값이 불린값으로 True/False로 떨어져야 하는데 null로 실행이 되어서요.. 원인을 못찾겠습니다 ㅜㅜ
-
해결됨스프링 시큐리티 OAuth2
M1 키클록 설치
tar 파일로 kc.bat 을 실행했으나 되지 않는데도커 이용해서 키클록 다운받아야 합니까?
-
미해결비전공자를 위한 풀스택 맛집지도 만들기 프로젝트!: Front, Back-end 그리고 배포까지
error: readStudents Query error
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. postman에서 get 메서드로 http://localhost:3000/students 실행했을 때 뜨지 않고, vscode console에서는 error: readStudents Query error라고 뜹니다. readStudents query가 잘못되서 전체학생 목록이 안나오는 것 같습니다. 어디가 잘못 됐을까요?<indexcontroller>const { pool } = require("../../config/database"); const { logger } = require("../../config/winston"); const jwt = require("jsonwebtoken"); const secret = require("../../config/secret"); const indexDao = require("../dao/indexDao"); //학생 생성 exports.createStudent = async function(req,res) { const { studentName, major, birth, address} = req.body; console.log(studentName, major, birth, address) }; //학생테이블 조회 exports.readStudents = async function(req, res){ const { studentIdx } = req.params; try { const connection = await pool.getConnection(async (conn) => conn); try { const [rows] = await indexDao.selectStudents(connection,studentIdx); return res.send({ result: rows, isSuccess: true, code: 200, // 요청 실패시 400번대 코드 message: "요청 성공", }); } catch (err) { logger.error(`readStudents Query error\n: ${JSON.stringify(err)}`); return false; } finally { connection.release(); } } catch (err) { logger.error(`readStudents DB Connection error\n: ${JSON.stringify(err)}`); return false; } }; // 예시 코드 exports.example = async function (req, res) { try { const connection = await pool.getConnection(async (conn) => conn); try { const [rows] = await indexDao.exampleDao(connection); return res.send({ result: rows, isSuccess: true, code: 200, // 요청 실패시 400번대 코드 message: "요청 성공", }); } catch (err) { logger.error(`example Query error\n: ${JSON.stringify(err)}`); return false; } finally { connection.release(); } } catch (err) { logger.error(`example DB Connection error\n: ${JSON.stringify(err)}`); return false; } }; <Indexdao 부분> const { pool } = require("../../config/database"); exports.selectStudents = async function (connection, studentIdx) { const Query = `SELECT * FROM Students where studentIdx = ?;`; const Params = [studentIdx]; const rows = await connection.query(Query, Params); return rows; }; exports.exampleDao = async function (connection) { const Query = `SELECT * FROM Students;`; const Params = []; const rows = await connection.query(Query, Params); return rows; }; <IndexRoute 부분> module.exports = function (app) { const index = require("../controllers/indexController"); const jwtMiddleware = require("../../config/jwtMiddleware"); // // 라우터 정의 // // app.HTTP메서드(uri, 컨트롤러 콜백함수) // app.get("/dummy", index.example); //학생테이블 조회 app.get("/students/:studentIdx", index.readStudents); app.post("/students", index.createStudent); };
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
static inner class 사용 이유
안녕하세요 강사님KakaoUserInfoResponseDto 를 작성하실 때KakaoAccount를 스태틱 이너 클래스로 만드신 이유가 뭔지 알 수 있을까요? 클래스를 새로 생성하는 것과 그렇지 않고 스태틱 이너 클래스로 생성하는 것 두 가지에 대한 장점과 단점이 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
6분 47초에 왜 업데이트 쿼리가 2번 나가는지 궁금합니다!
값이 변경되는건 1개인데 쿼리는 왜 2개나가는지 이해가 잘 되지않습니다.
-
미해결따라하며 배우는 리액트 A-Z[19버전 반영]
spread oparator ...가 deep copy 맞을까요?
spread oparator ... 가 deep copy 맞을까요?
-
미해결
Choose the best way to book Southwest Airlines Booking in Low Cost?
Southwest Airlines Booking Festive Season. The 2022 low fare search of this airline is a planning tool for budgeted trips. If you wish to reserve a flight with this airline in the next month or check the lowest fares, use the low fare search. You may also look at all of your low-cost return and departing options using the Southwest Airlines Low Fares Calendar. If you utilize this calendar, prices will change often, so keep an eye out for the best deal. Always remember that the low fare finder is designed for those people who are willing to sacrifice certain parts of their ticket to save money. These include leaving dates and flight classes.
-
미해결데이터베이스 중급(Modeling)
사용하시는 프로그램
강사님 수업 잘듣고있습니다.감사합니다. 다름이아니라 실습하면서 강의를 들으려고하는데실습프로그램을 알수있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
인텔리제이 무료버전을 사용해서 그런데
period같은 객체를 member에 작성할 때 @Embeddable을 사용해야 오류가 안난다고 나와있는데team같은 객체는 member에 작성할 때 many to one같은 어노테이션을 작성해서 오류가 안나는 건가요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
data-alt 와 id 간의 관계
안녕하세요!질문드립니다ㅠㅠ제가 이해를 못하는건지, 설명을 놓친건지 해서요.data-alt와 id를 attr로 엮을 때,앞에 #을 붙이면 id의 tab1이 되는거라는 설명이 이해가 가질 않습니다.#이 그냥 원래 id를 지칭하는 문법같은건가요?
-
해결됨Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
Repository test 관련해 질문이 있습니다.
안녕하세요! 강사님 덕분에 플러터 공부를 재미있게 하고 있는 수강생입니다. 다름이 아니라 클린 아키텍쳐를 이용하여 개인 프로젝트를 만들고 있는데 repository 테스트 코드를 만들다가 궁금한 점이 생겨 질문을 남깁니다. 현재 주식 앱처럼 리턴 타입이 Result인 Repository를 테스트 해도 되나요? 테스트 하려면 어떤 식으로 접근해야 할까요? 제가 이해한 바로는 Result 클래스는 viewmodel에서 성공 및 실패에 따라서 state를 다르게 적용하기 위해 만들어진 것인데 테스트 코드에서는 state가 따로 없어서 어떤 식으로 성공을 정의할지 잘 모르겠습니다. (hive를 통한 로컬 db 테스트 코드는 만들어진 상태입니다.) 1번과 이어지는 질문인데요, 레이어마다(데이터, 도메인, 프레젠테이션) dao, repository, viewmodel이 데이터를 다루는 역할을 하는데, 이것들의 테스트 코드를 만드는 게 맞을까요? 현재 계획은 위 세 개에 대한 테스트 코드, 위젯에 대한 테스트 코드를 만드려고 합니다. 혹시 잘못된 부분이나 또 필요한 테스트가 있다면 알려주시면 감사하겠습니다.앞으로도 강의 많이 만들어주세요! 매번 새롭게 배우고 있습니다. 감사합니다ㅎㅎ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
sendQueue 관련 질문입니다.
강의를 들으며 1send + sendQueue를 사용하는 경우의 장점은 1.더 많은 클라이언트를 받을 수 있다. 2.TCP 헤더가 적게 붙어 네트워크상 이점이 있다. 이렇게 생각했습니다.하지만 실제로 서버를 만들다 보니 동시 send가 불가능해 대부분의 시간을 lock에 소비했고, n send에 비해 동시접속 가능한 클라이언트 수가 줄어들었습니다.그럼 2번 장점이 확실한가? 궁금해서 wireshark로 확인해 봤을 때 별 차이가 없었습니다. 큐에 넣지 않고 WSAsend를 많이 호출해도 os가 패킷을 뭉쳐 보내는 것 같습니다. 지금 방식의 장점이 궁금합니다.
-
미해결
raccoon 정확도
raccoon 학습 때 정확도 구하는 방법을 알고 싶습니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
웹드라이버가 m1에서 작동하지 않는것 같습니다..
크롬 드라이버 자동 업데이트 부분에서부터 막히네요ㅜㅜ 이렇게 현재 m1에서는 웹드라이버가 정상적으로 작동하지 않고 있습니다ㅜㅜ 구글링해보니 얼마 안된 이슈인듯하네요ㅜㅜ
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
[05-1] 아래와 같이 return 함수에서만 괄호로 나옵니다.
안녕하세요?강의를 듣던 중에 제가 코딩한 것이 예상과 달라서 질문드립니다.같은 내용을 코딩하였는데 왜 아래는 괄호 안에 문구가 나오고, 위는 괄호 없이 문구가 나오나요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션과 스프링 시큐리티
혹시 스프링 시큐리티를 쓰게 되면 이런식으로 request.getSession() 할 필요가 없나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
repository 작성 시 , spring-data-jpa 의 jpaRepository 와 persistence manager 객체 주입의 선택 기준
질문 : 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 안녕하세요. 선생님 이번 강의에 spring-data-jpa 의 jpa repository 를 사용하지 않고 EntityManager 를 주입받아 repository 를 사용 하는 이유는 학습의 목표가 jpa 의 동작을 더 잘 이해하기 위함이라고 들엇습니다.( 출처 : https://www.inflearn.com/questions/549972)그러면 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 하나의 트랜잭션의 명령을 길게 여러개 쓰고 싶으면 jpa repository 의 함수를 직접 작성한다라고 이해해도 될까요 ?
-
미해결우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
변수자동생성에 관하여
안녕하세요 강의 잘 들었습니다.다름이 아니라 파이썬 클래스 내부변수(self.~)를 혹시 자동으로 여러 개 생성해주는 방법이 없을까요?전역변수 자동생성은 for i in range(num): global()[var_{}.format(i)]=~로 생성할 수 있는건 아는데, 클래스 내부변수나 지역변수를 자동으로 생성하는 방법이 있을까요?감사합니다.
-
미해결고수가 되는 파이썬 : 동시성과 병렬성 문법 배우기 Feat. 멀티스레딩 vs 멀티프로세싱 (Inflearn Original)
변수 자동생성에 관하여
안녕하세요 강의 잘 들었습니다.다름이 아니라 파이썬 클래스 내부변수(self.~)를 혹시 자동으로 여러 개 생성해주는 방법이 없을까요?전역변수 자동생성은 for i in range(num): global()[var_{}.format(i)]=~로 생성할 수 있는건 아는데, 클래스 내부변수나 지역변수를 자동으로 생성하는 방법이 있을까요?감사합니다.