Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Kernighan의 C언어 프로그래밍
- d
- GIT
- baeldung
- /etc/network/interfaces
- 스프링부트핵심가이드
- 서버설정
- 코드로배우는스프링부트웹프로젝트
- 구멍가게코딩단
- 선형대수
- network configuration
- 자료구조와함께배우는알고리즘입문
- 이터레이터
- 코드로배우는스프링웹프로젝트
- resttemplate
- 처음 만나는 AI 수학 with Python
- 리눅스
- 네트워크 설정
- 티스토리 쿠키 삭제
- 목록처리
- 자바편
- 데비안
- 친절한SQL튜닝
- 스프링 시큐리티
- 페이징
- iterator
- 알파회계
- 처음 만나는 AI수학 with Python
- ㅒ
- 자료구조와 함께 배우는 알고리즘 입문
Archives
- Today
- Total
bright jazz music
리액트 앱과 백엔드 서버 연동 테스트3 (+ Nginx) 본문
이전 포스팅과 반복되는 설명은 생략하였다.
4. 또 다른 연동 테스트 (+ Nginx)
참고로 이건 nginx와 연동하여 81번 포트를 사용하였다.
Nginx 설정은 아래 포스팅 참고
4.1. 백엔드 API
리액트 앱의 요청을 받아줄 스프링 부트 서버의 API
localhost:10000/api/bpitest로 요청을 받으면
{"name":"catnails","age":"20"}
와 같은 응답을 반환한다.
package com.test.reactspringboottest.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/apitest")
public String api() {
return "api";
}
@GetMapping("/bpitest")
public TestClass bpi(){
TestClass testClass = new TestClass();
testClass.setName("catnails");
testClass.setAge("20");
return testClass;
}
}
class TestClass {
private String name;
private String age;
public String getName(){
return name;
}
public String getAge(){
return age;
}
public void setName(String name){
this.name = name;
}
public void setAge (String age){
this.age = age;
}
}
4.2. index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
// <React.StrictMode>
// <App />
// </React.StrictMode>
<div>
<input type="button" value="get data" onClick={
function(){
fetch('/api/bpitest')
.then(function(result){return result.json})
.then(function(json){console.log(json);})
}.bind(this)
}>
</input>
</div>
);
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
4.3. package.json
{
"name": "my-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
//여기에 요청을 받을 업스트림 서버의 아이피와 포트를 적어준다.
"proxy":"http://127.0.0.1:10000",
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
4.3. my-app.conf
설정에 참고한 포스팅
server {
listen 81;
location / {
root /usr/local/my-app/build;
index index.html index.htm;
try_files $uri $uri/ /index.htm;
#proxy_pass http://127.0.0.1:10000/;
}
# location /getFromReactApp {
# proxy_pass http://127.0.0.1:10000;
# }
location /api {
proxy_pass http://127.0.0.1:10000;
}
}
경로가 /api로 지정된 경우
잘 온다.
Nginx 설정은 여전히 확신이 서지 않는 부분이 있다. 공부가 필요하다.
'Framework > ReactJs' 카테고리의 다른 글
생활코딩: 리액트 프로그래밍 CRUD 기본 (0) | 2023.05.14 |
---|---|
리액트 앱과 백엔드 서버 연동 테스트4 (+ docker) (0) | 2023.04.09 |
리액트 앱과 백엔드 서버 연동 테스트 2 (0) | 2023.04.08 |
리액트 앱과 백엔드 서버 연동 테스트 1 (0) | 2023.04.08 |
리액트 앱(ReactJs)와 엔진엑스(Nginx) 연동 (0) | 2023.04.06 |
Comments