인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

wjdwoals042님의 프로필 이미지

작성한 질문수

코드로 배우는 React with 스프링부트 API서버

REST 방식 컨트롤러 만들기(1)

REST 방식 컨트롤러 만들기에서 익스플로러에 데이터 값이 출력 안됩니다

작성

·

48

·

수정됨

0

TodoController 파일 만들고 Api서버로 스프링 기동시키고 todo경로에 tno 값을 입력해도 익스플로러 화면에 제이슨데이터 값이 표시되지 않습니다 DB상에 있는 데이터로 입력을 해도 나오지 않는 걸 보면 제이슨 설정이 잘못된게 아닌가 싶은데 답변 부탁드립니다

아래에 로그 남겨둡니다

오전 11:13:21: 실행 중 ':org.zerock.apiserver.ApiserverApplication.main()'…

Starting Gradle Daemon...

Gradle Daemon started in 915 ms

> Task :clean

> Task :compileJava

> Task :processResources

> Task :classes

> Task :org.zerock.apiserver.ApiserverApplication.main()

. ____ _ __ _ _

/\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

\\/ ___)| |_)| | | | | || (_| | ) ) ) )

' |____| .__|_| |_|_| |_\__, | / / / /

=========|_|==============|___/=/_/_/_/

:: Spring Boot :: (v3.4.1)

2025-03-01T11:13:29.675+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.zerock.apiserver.ApiserverApplication : Starting ApiserverApplication using Java 21.0.5 with PID 12000 (C:\Users\zzamp\Desktop\apiserver\apiserver\build\classes\java\main started by zzamp in C:\Users\zzamp\Desktop\apiserver)

2025-03-01T11:13:29.678+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.zerock.apiserver.ApiserverApplication : No active profile set, falling back to 1 default profile: "default"

2025-03-01T11:13:29.704+09:00 INFO 12000 --- [apiserver] [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

2025-03-01T11:13:29.704+09:00 INFO 12000 --- [apiserver] [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'

2025-03-01T11:13:30.098+09:00 INFO 12000 --- [apiserver] [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.

2025-03-01T11:13:30.139+09:00 INFO 12000 --- [apiserver] [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 35 ms. Found 1 JPA repository interface.

2025-03-01T11:13:30.495+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)

2025-03-01T11:13:30.506+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2025-03-01T11:13:30.506+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.34]

2025-03-01T11:13:30.539+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2025-03-01T11:13:30.539+09:00 INFO 12000 --- [apiserver] [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 835 ms

2025-03-01T11:13:30.669+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]

2025-03-01T11:13:30.725+09:00 INFO 12000 --- [apiserver] [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.6.4.Final

2025-03-01T11:13:30.754+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled

2025-03-01T11:13:30.942+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer

2025-03-01T11:13:30.966+09:00 INFO 12000 --- [apiserver] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...

2025-03-01T11:13:31.039+09:00 INFO 12000 --- [apiserver] [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.mariadb.jdbc.Connection@77e52237

2025-03-01T11:13:31.040+09:00 INFO 12000 --- [apiserver] [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.

2025-03-01T11:13:31.082+09:00 INFO 12000 --- [apiserver] [ restartedMain] org.hibernate.orm.connections.pooling : HHH10001005: Database info:

Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']

Database driver: undefined/unknown

Database version: 10.11.10

Autocommit mode: undefined/unknown

Isolation level: undefined/unknown

Minimum pool size: undefined/unknown

Maximum pool size: undefined/unknown

2025-03-01T11:13:31.519+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)

2025-03-01T11:13:31.555+09:00 INFO 12000 --- [apiserver] [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

2025-03-01T11:13:31.810+09:00 WARN 12000 --- [apiserver] [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning

2025-03-01T11:13:32.040+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729

2025-03-01T11:13:32.059+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'

2025-03-01T11:13:32.064+09:00 INFO 12000 --- [apiserver] [ restartedMain] o.zerock.apiserver.ApiserverApplication : Started ApiserverApplication in 2.638 seconds (process running for 2.905)

2025-03-01T11:13:57.170+09:00 INFO 12000 --- [apiserver] [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'

2025-03-01T11:13:57.170+09:00 INFO 12000 --- [apiserver] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'

2025-03-01T11:13:57.171+09:00 INFO 12000 --- [apiserver] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms

Hibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 where t1_0.tno=?

Hibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 where t1_0.tno=?

Hibernate: select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 where t1_0.tno=?

답변 4

0

wjdwoals042님의 프로필 이미지
wjdwoals042
질문자

답변 감사합니다 확인해보니 TodoServiceImpl에 오버라이드 TodoDTO return값이 null이었던 게 원인이었습니다

0

구멍가게코딩단님의 프로필 이미지
구멍가게코딩단
지식공유자

우선은 컨트롤러에서 tno 값이 정상적인지 로그를 찍어서 확인해 주시고.

 

select t1_0.tno,t1_0.complete,t1_0.content,t1_0.due_date,t1_0.title from tbl_todo t1_0 where t1_0.tno=?

 

의 실행 결과를 확인해 보셔야 할 듯 합니다.

혹시 DB에 커밋이 안되어 있을 수도 있으니 커밋도 한 번 하시는게 좋습니다.

 

 

0

wjdwoals042님의 프로필 이미지
wjdwoals042
질문자

@RestController 어노테이션에 @GetMapping 파라미터와 리턴 값을 고정값으로 설정하고 테스트해봤는데 익스플로러 화면에 고정값이 출력된 게 확인됐습니다 json 설정은 문제가 없어보이는데 어디가 문제인지 전혀 모르겠습니다

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

wjdwoals042님이 겪고 있는 문제 상황은 REST 컨트롤러에서 데이터를 올바르게 가져오지 못하는 상황으로 보입니다. 몇 가지 확인할 수 있는 사항들을 안내드리겠습니다.

문제 진단 및 해결책

  1. 엔드포인트 매핑 확인

    • TodoController 클래스의 @RequestMapping 어노테이션이 올바르게 설정되어 있는지 확인하세요. 예를 들어, @GetMapping("/todo/{tno}")와 같은 형태로 tno 값을 URL로 받을 수 있어야 합니다.
  2. DTO의 toString() 메서드 오버라이드 여부

    • 데이터 객체가 제대로 직렬화되지 않아 JSON 형태로 변환이 이루어지지 않는 경우일 수 있습니다. DTO 클래스에 toString() 메서드가 올바르게 오버라이드되어 있는지 확인하세요.
  3. JSON 설정 확인

    • 프로젝트 내 application.properties 또는 application.yml에 JSON 설정이 올바르게 되어 있는지 확인하세요. 또한, 필요하다면 @ResponseBody 어노테이션을 검사하시고, 데이터 객체를 반환할 때 JSON 형태로 직렬화되는지 확인하세요.
  4. 데이터베이스 내 데이터 확인

    • 데이터베이스에 올바른 tno를 가진 레코드가 존재하는지 확인해주세요. 예를 들어, Hibernate 쿼리가 정확히 수행되고 있지만 실재 데이터가 존재하지 않아 화면에 표시되지 않을 수 있습니다.

유사한 사례 및 추가 도움

아래와 같은 유사한 문제를 다룬 사례들이 질문 해결에 도움이 될 수 있습니다:
- “QTodo Class Not found”: 클래스 파일이 누락되었거나 잘못된 경우.
- “테이블이 생성되지 않습니다”: JPA 및 DB 관련 문제 해결 사례.

저는 질문자님의 이해를 돕고자 기존 답변을 참고하여 유사한 질문의 답변 링크를 제시하고 있습니다. 현재 베타 기능으로 인해 만족스럽지 않은 답변일 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.