inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

patch 요청시 payload가 넘어가지 않습니다.

해결됨

[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>

아래 두 요청 코드에서 patch 요청 시 payload가 엔드포인트 함수에서 None으로 잡혀 model_dump()에서 오류가 발생합니다. 원인을 잘 모르겠습니다. [오류] [요청 코드] @pytest.mark.parametrize("payload", [ {"display_name": "푸딩캠프"}, {"email": "hannal@example.com"}, {"display_name": "푸딩캠프", "email": "hannal@example.com"}, ]) async def test_사용자가_변경하는_항목만_변경되고_나머지는_기존_값을_유지한다( client_with_auth: TestClient, # 인증을 받은 클라이언트 payload: dict, # 클라이언트 요청 페이로드 host_user: User, # 클라이언트 사용자 ): # 현재 사용자 정보를 보관한다. before_data = host_user.model_dump() response = client_with_auth.patch("/account/@me", json=payload) # (...) async def test_비밀번호_변경_시_해싱_처리한_비밀번호가_저장되어야_한다( client_with_auth: TestClient, host_user: User, db_session: AsyncSession, ): before_data = host_user.hashed_password payload = { "password": "new_password", "password_again": "new_password", } response = client_with_auth.patch("/account/@me", json=payload) # (...) [엔드포인트] @router.patch("/@me", response_model=UserDetailOut) async def update_user( user: CurrentUserDep, session: DbSessionDep, payload: UpdateUserPayload = Body(...), ) -> User: updated_data = payload.model_dump(exclude_none=True, exclude={"password", "password_again"}) stmt = update(User).where(User.id == user.id).values(**updated_data) await session.execute(stmt) await session.commit() await session.refresh(user) return user [스키마] class UpdateUserPayload(SQLModel): display_name: str | None = Field(default=None, min_length=4, max_length=40) email: EmailStr | None = Field(default=None, max_length=128) password: str | None = Field(default=None, min_length=8, max_length=128) password_again: str | None = Field(default=None, min_length=8, max_length=128) @model_validator(mode="after") def check_all_fields_are_none(self) -> Self: if not self.model_dump(exclude_none=True): raise ValueError("최소 하나의 필드는 반드시 제공되어야 합니다.") return self @model_validator(mode="after") def verify_password(self) -> Self: if self.password is not None or self.password_again is not None: # 둘 중 하나라도 들어오면 둘 다 있어야 함 if not self.password or not self.password_again: raise ValueError("비밀번호 변경 시 password와 password_again을 모두 제공해야 합니다.") if self.password != self.password_again: raise ValueError("비밀번호가 일치하지 않습니다.") @computed_field @property def hashed_password(self) -> str | None: if self.password: return hash_password(self.password) return None [픽스처] @pytest.fixture(autouse=True) async def db_session(): dsn = "sqlite+aiosqlite:///:memory:" engine = create_async_engine(dsn) async with engine.begin() as conn: await conn.run_sync(SQLModel.metadata.drop_all) await conn.run_sync(SQLModel.metadata.create_all) session_factory = create_session(engine) async with session_factory() as session: yield session await conn.run_sync(SQLModel.metadata.drop_all) await engine.dispose() @pytest.fixture() def fastapi_app(db_session: AsyncSession): app = FastAPI() include_routers(app) async def override_use_session(): yield db_session app.dependency_overrides[use_session] = override_use_session return app @pytest.fixture() async def host_user(db_session: AsyncSession): user = account_models.User( username="puddingcamp", hashed_password=hash_password("testtest"), email="puddingcamp@example.com", display_name="푸딩캠프", is_host=True, ) db_session.add(user) await db_session.flush() await db_session.commit() return user @pytest.fixture() def client_with_auth(fastapi_app: FastAPI, host_user: account_models.User): payload = LoginPayload.model_validate({ "username": host_user.username, "password": "testtest", }) with TestClient(fastapi_app) as client: response = client.post("/account/login", json=payload.model_dump()) assert response.status_code == status.HTTP_200_OK auth_token = response.cookies.get("auth_token") assert auth_token is not None client.cookies.set("auth_token", auth_token) yield client

  • python
  • aws
  • tdd
  • FastAPI
  • 북-챌린지
kyo lee 댓글 3 좋아요 0 조회수 83

output style 질문.

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

output style md 파일에 rule 개념을 넣으면 실제로 코드를 작성하고 반영할 때 해당 rule을 지키면서 반영하더라고요. CLAUDE.md 파일을 안만들고 특정 프로젝트에 적용하는 global rule 개념으로 사용해도 되는건가요?

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
Tk 댓글 1 좋아요 0 조회수 84

인텔리제이 무료버젼이 통합되었다는데 30일 무료버전이면 어떻게 사용하나요

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 질문 제목 그 자체이긴합니다 인텔리제이 무료버전이 없어지고 통합되엇는데 https://www.jetbrains.com/ko-kr/idea/download/?section=windows 해당 사이트에 나와있는걸 다운로드 하면될까요

  • java
  • 객체지향
유준상 댓글 3 좋아요 1 조회수 1024

추후 학습 계획 질문

미해결

2026 코딩테스트 올인원 [JAVA]

안녕하세요! 강의 수강 완료 후에는 복습하면서 다양한 문제를 풀어보면서 학습하는 방법이 좋을까요?..

  • java
  • 코딩-테스트
  • 알고리즘
  • data-structure
슝스스 댓글 1 좋아요 0 조회수 104

HTTPS 관련 코드 해석하기

미해결

비전공자도 이해할 수 있는 Nginx 입문/실전

안녕하세요. 섹션 7의 "35. Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기" 강의를 들으면서 궁금한 점이 생겨서 질문 남깁니다. server { # 2. 들어온 요청의 주소의 Host가 jscode.p-e.kr일 경우 (ex. http://jscode.p-e.kr/about) # https://jscode.p-e.kr/...(ex. https://jscode.p-e.kr/about)로 리다이렉트(301) 처리 if ($host = jscode.p-e.kr) { return 301 https://$host$request_uri; } # managed by Certbot # 1. jscode.p-e.kr 주소로 들어온 요청이면서 # 80번 포트(http)로 들어오는 요청일 때 # 이 server 블럭에서 처리하도록 설정 listen 80; server_name jscode.p-e.kr; # 3. 그 이외의 경우에는 404(Not Found)로 응답 return 404; # managed by Certbot } 강의자료에서 제공해주시는 /etc/nginx/conf.d/default.conf 파일의 일부 코드입니다. 이미 server_name에서 jscode.p-e.kr 주소로 들어온 요청인지 확인하니깐, if( $host = jscode.p-e.kr ) 는 없어도 되는거 아닌가요? 코드가 존재하는 다른 의도가 있는건지 궁금합니다.

  • aws
  • nginx
  • reverse-proxy
  • infrastructure
kimay9623 댓글 2 좋아요 0 조회수 106

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

해결됨

나도코딩의 자바 기본편 - 풀코스 (20시간)

강의를 볼 때는 이해가 되는데, 막상 퀴즈를 풀려고 하면 어떻게 접근해야 할지 머릿속에서 잘 떠오르지 않습니다. 코드를 작성하는 데도 시간이 오래 걸리고, 결과를 보면 제가 짠 코드가 스스로 보기에 만족스럽지 않을 때가 많습니다. 자바를 처음 배울 때 이런 고민이 드는 것이 당연한 걸까요?

  • java
  • 객체지향
champ 댓글 2 좋아요 1 조회수 198

이렇게(캡쳐) 뜨고 클로드 설치가 안 됩니다

미해결

클로드 코드 완벽 마스터: AI 개발 워크플로우 기초부터 실전까지

어떻게 하면 될까요?

  • react
  • next.js
  • cursor
  • tailwindcss
  • claude
NAJAKSA 댓글 3 좋아요 0 조회수 1862

취약점 제거시 nestjs 버전 문제가 생길까요?

해결됨

한 입 크기로 잘라먹는 Next.js

'섹션 2. Next.js를 소개합니다' - '7. 1.3) 실습용 백엔드 서버 세팅하기' 강의 10:04 에서 npm i 하면 ' 30 vulnerabilities (9 low, 7 moderate, 13 high, 1 critical) '라고 취약점이 많이 떠서 AI를 활용해서 취약점을 제거 했습니다. AI가 권하는대로 npm audit fix npm install @nestjs/common@latest @nestjs/core@latest @nestjs/platform-express@latest @nestjs/swagger@latest @nestjs/cli@latest @nestjs/testing@latest 명령어를 사용하여 취약점을 제거했습니다. 이후 npm i 등 cmd 명령어를 순서대로 입력해서 해당 강의에서는 문제 없이 잘 진행이 됩니다. npm install @nestjs/XXX@latest 명령어들이 최신 버전을 설치하는거 같아서 나중에 버전 관련 문제가 생기지 않을까 걱정이 됩니다. 지금이라도 다시 백엔드 서버 세팅을 다시 맞춰서 강의와 맞는 버전으로 진행하는게 좋을까요?

  • react
  • typescript
  • next.js
Sec 댓글 1 좋아요 0 조회수 122

강의 연장 부탁드립니다.

해결됨

CloudNet@ - Amazon EKS 기본 강의

안녕하세요. 해당 강의 수강할 수 있는 기간이 있던 걸로 기억해서 확인해보니 작년 2월 3일에 구매했더라구요. 아직 완강하지 못해서 강의 연장을 요청 드립니다. 확인 부탁드리겠습니다. 감사합니다.

  • 네트워크
  • aws
  • kubernetes
  • amazon-eks
  • eks
JaeRyoung Oh 댓글 3 좋아요 1 조회수 105

default.conf 파일이 없습니다.

미해결

비전공자도 이해할 수 있는 Nginx 입문/실전

/etc/nginx/conf.d 폴더에 default.conf 파일이 없습니다.

  • aws
  • nginx
  • reverse-proxy
  • infrastructure
Bruce LEE 댓글 2 좋아요 0 조회수 136

static이 뭐였는지 기억이 안나요 ㅜㅜ

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

static이 뭐였는지 기억이 안나요 ㅜㅜ강의에서 어떤경우에 쓰는지 말씀해주셨던거 같은데 어디인지 기억이 안나요 ㅠㅠ

  • java
  • 객체지향
kmch0802 댓글 2 좋아요 0 조회수 161

# 메모리 기능이 없네요..

해결됨

The 10x AI-Native Developer: 회사에서 AI로 압도적 성과를 내는 법

2.0.76 (Claude Code) 버전에는 # 메모리 기능이 없습니다..ㅠ (+ 자문자답일거 같은데요.. 혼자 이것저것 하다보니 /memory 기능 이용하면 어쨌든 CLAUD.md에 내용 저장하게끔 하는 기능이 있는데, 결국 # 쓰는거랑 결과는 동일하니 이렇게 처리하면 되겠죠...?)

  • spring-boot
  • next.js
  • 인공지능(ai)
  • ai-활용-(ax)
  • claude
devJR 댓글 2 좋아요 2 조회수 176

섹션 9 실전 질문

미해결

스프링 부트와 리액트로 구현하는 보안 JWT 로그인

강사님 세션 9에서 Secretes Manager나 Parameter Store 를 현업에서도 깃허브 액션 하고 같이 쓰나요? 이거 궁금해서 질문드립니다.

  • react
  • java
  • aws
  • spring-boot
  • spring-security
KMC 댓글 1 좋아요 0 조회수 99

넥스트 버젼 질문

미해결

[리뉴얼] React로 NodeBird SNS 만들기

안녕하세요 강의를 사놓고 조금 듣고 네이티브 공부를 하다가 다시 공부를 하려고합니다 강의상에서는 넥스트를 9버젼을 쓰는데 최신 버젼을 쓰는걸 추천하실까요? 아니면 구버젼 그대로 쓰는걸 추천하실까요?

  • react
  • redux
  • node.js
  • express
  • next.js
정진호 댓글 2 좋아요 0 조회수 117

eslint.config.mjs 내 rules 어떻게 설정 하나요?

해결됨

한 입 크기로 잘라먹는 Next.js

import { defineConfig, globalIgnores } from "eslint/config"; import nextVitals from "eslint-config-next/core-web-vitals"; import nextTs from "eslint-config-next/typescript"; const eslintConfig = defineConfig([ ...nextVitals, ...nextTs, // Override default ignores of eslint-config-next. globalIgnores([ // Default ignores of eslint-config-next: ".next/**", "out/**", "build/**", "next-env.d.ts", ]), ]); export default eslintConfig; 위 와 같이 구성 되어 있는데, "@typescript-eslint/no-unused-vars: "warn" "@typescript-eslint/no-explicit-any": "off" 이 두가지 옵션을 어디에 입력해야 될지 모르겠어요 제미나이 답변으로는 아래 처럼 하라는데, 맞을까요? import { defineConfig, globalIgnores } from "eslint/config"; import nextVitals from "eslint-config-next/core-web-vitals"; import nextTs from "eslint-config-next/typescript"; const eslintConfig = defineConfig([ ...nextVitals, ...nextTs, // Override default ignores of eslint-config-next. { rules: { "@typescript-eslint/no-unused-vars": "warn", "@typescript-eslint/no-explicit-any": "off", }, }, globalIgnores([ // Default ignores of eslint-config-next: ".next/**", "out/**", "build/**", "next-env.d.ts", ]), ]); export default eslintConfig;

  • react
  • typescript
  • next.js
김주일 댓글 1 좋아요 0 조회수 138

[book]/[id]/page.tsx 모달 띄울 때 성능 하락 현상은 ReviewList를 불러오면서 발생하는 문제 같습니다.

미해결

한 입 크기로 잘라먹는 Next.js

이 부분을 주석처리해서 빌드하고 실행해보니 확실히 모달 띄우고 닫을 때 시간 체감이 될 정도로 줄어드네요. 강의에 넣어주신 Vercel 최적화를 진행해도 잡히지 않아서 더 근본적인 문제가 있는 것 같아 실험해 봤더니 유의미한 결과가 있던 것 같아서 공유드립니다. 개인적인 생각으로는 수십 개의 데이터를 한꺼번에 가져오는 바람에 생기는 성능 이슈라고 생각하는데, 페이지네이션 api 요청 처리를 배우는 겸으로 /review/book/${bookId} api를 조금 더 고도화하면 좋을 것 같습니다. 긴 강의 준비해주시느라 너무 고생 많으셨고, 덕분에 제 실무 프로젝트에도 아주 유용하게 적용할 수 있을 것 같습니다. 감사합니다!

  • next.js
  • typescript
이인기 댓글 2 좋아요 0 조회수 87

boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 일단 현재 yml 강의 자료 기준으로는 trasaction rolled back에 대한 로그가 찍히질 않는데, 해당 옵션을 추가해봤습니다. org.springframework.orm.jpa: trace #JPA 트랜잭션 관련 로그 그랬더니 찍히긴 하던데 약간 이상하게? 찍힙니다. 2026-01-07T02:05:57.767+09:00 DEBUG 5469 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Initiating transaction rollback 2026-01-07T02:05:57.767+09:00 DEBUG 5469 --- [ Test worker] o.s.orm.jpa.JpaTransactionManager : Rolling back JPA transaction on EntityManager [SessionImpl(1610625797<open>)] 혹시나 다른 옵션이 있을까? class가 아니라 SessionImpl? 이렇게 나오네요. 이건 제가 공식 문서를 봐봤는데, 다른분들께 도움이 될까 싶어서요, 나중에 자료도 업데이트 해주시면 좋을 것 같아요! https://github.com/gavlyukovskiy/spring-boot-data-source-decorator?tab=readme-ov-file#quick-start 현재 저는 부트 4 버전을 사용중인데, 4버전 부터는 p6spy를 1.10.0 이 아닌 2.0.0으로 해줘야 합니다! implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:2.0.0' 현재 자료 기준은 1.10.0이라 수정해 주시면 좋을 것 같습니다! (그리고 3버전도 1.12.1 로 올라갔습니다!) 사실 2번은 질문이라기 보다는 알려드리고 싶은 부분이었고, 1번만 트랜잭션 로그를 다르게 찍는 방법? 이 있는지 궁금합니다.

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
Minho Lee 댓글 2 좋아요 1 조회수 242

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

안녕하세요, 하기 코드 중에서 it는 list.iterator의 return값을 담은, 또 다른 Iterator로 판단됩니다. 저는 그 다른 it를 while 돌려서 (알 수 없음)을 모두 삭제했습니다.(첫 번째 while문) 그러고나서 다시 it = list.iterator 코드를 입력하면, 사실상 앞에서 (알 수 없음)을 삭제했던 작업은 다 날아가고 새로운 Iterator return값으로 덮어 씌워지고, 이후 두 번째 while문에서는 (알 수 없음)도 모두 출력되어야 하는 상황으로 이해되는데 그렇지 않고 강사님께서 의도하신대로 정상 출력되더라고요. 혹시 사유가 어떻게 되나요? 자바에서 x = A 라는 수식은 x에 A값을 집어넣는 게 아닌가요? x는 A의 메모리 주소를 가리키고 x를 수정하면 A 내부 값이 함께 수정되는건가요?? // (알 수 없음) 데이터 삭제 it = list.iterator(); while (it.hasNext()) { String s = it.next(); if (s.contains("(알 수 없음)")) { it.remove(); } } // 삭제 정리된 데이터 재순회 it = list.iterator(); // 데이터 삭제 간 맨 마지막으로 가 있는 위치 초기화 while (it.hasNext()) { System.out.println(it.next()); }

  • java
  • 객체지향
mibhf6919 댓글 1 좋아요 0 조회수 103

깃 실습할때 MyCoolApp관련 내용 직접 적어야 하나요?

미해결

제로베이스부터 배우는 웹개발의 개념과 바이브 코딩

코드 아예 모르는 생초보라.. 선생님은 미리 짜 놓은 내용으로 붙여넣으시는데 제가 관련 내용 직접 쳐야 하는게 의도인지, 아니면 다른 방식으로 적당히 내용을 채워야 하는지..? 궁금해서 여쭙니다ㅎㅎ 아니면 혹시 해당 내용 텍스트로 공유해주셨거나 강의록등에서 확인할 수 있을까요?

  • react
  • 웹앱
  • next.js
  • cursor
  • 인공지능(ai)
김소형 댓글 1 좋아요 0 조회수 80

사고력 키우는 법이 어떤게 있나요?

미해결

나도코딩의 자바 기본편 - 풀코스 (20시간)

int[] size = {250, 255, 260, 265, 270, 275, 280, 285, 290, 295}; for (int i = 0; i < size.length; i++) { System.out.println("사이즈 " + size[i] + " (재고 있음)"); } 사고력이라고 칭하는게 맞는지는 모르겠지만 위에 코드가 제 코드 인데요. 부끄럽지만 이건 앞으로 보나 뒤로 보나 생각하는 힘이 부족 한거 같아요. 퀴즈를 풀기전 배열을 배우는 것도 그렇고 이해가 잘 안되었지만 꾸역꾸역 어떻게든 이해를 해서 퀴즈를 풀었는데 선생님께서 말씀하신 효율적이고 빠르게 적용할수 있는 코드가 제 머리에선 도무지 나오지 않습니다ㅠㅠ 퀴즈 풀이를 볼때 250 + (5 * i) 이 코드만 보고 와 어떻게 저렇게 풀 생각을 하지 라는 생각을 하곤 합니다. 여기까지 오면서 오랫동안 쉴때도 있고 복습도 틈틈히 할 때도 있었습니다. 퀴즈 풀이에서 최대한 선생님 코드를 보며 왜 이런 식으로 적으셨을까 생각하며 이해를 할때도 있었습니다. 근데 한 챕터 한 챕터 갈 수록 이해하는데 오래 걸려서 사고력 키우는 법이 따로 있는지 여쭈어봅니다ㅠㅠ

  • java
  • 객체지향
조민강 댓글 2 좋아요 0 조회수 130

인기 태그

인프런 TOP Writers

주간 인기글