const pool = mysql.createPool({
connectionLimit: 10,
host: dbconfig.host,
user: dbconfig.user,
password: dbconfig.password,
database: dbconfig.database,
debug: false,
});
const app = express();
app.use(express.urlencoded({extended:true}));
app.use(express.json());
app.get('/user', (req,res)=>{
//로직 작성
})
app.post("/user", (req,res)=>{
console.log('/user 호출', +req);
const paramId = req.body.id;
const paramPassword = req.body.password;
pool.getConnection((err, conn)=>{
if(err){
conn.release();
console.log('mysql-error');
return ;
}
console.log('mysql success');
const exec = conn.query('insert into school.users (id,password) values (?,?);',
[paramId,paramPassword],
(err,result)=>{
conn.release();
console.log('실행된 sql ' +exec.sql);
if(err){
console.log('error!!');
console.dir(err);
return;
}
if(result){
console.dir(result);
console.log('inserted data '+result);
res.writeHead('200', {'Content-Type': 'text; charset=utf8'});
res.end();
}else{
console.log('fail to insert');
res.writeHead('400',{'Content-Type': 'text; charset=utf8'})
}
}
)
})
});
프론트에서 테스트를 하기 위해 간단한 ui를 만든 후 , get 방식과 post 방식 모두 테스트를 해봤다.
const baseUrl = 'http://10.0.2.2:3000/user';
String test = '1234';
fetch() async {
final url = Uri.parse('$baseUrl?test=$test');
var res = await http.get(url);
}
url 뒤에 데이터를 붙혀서 보내주는 형식으로 저런형태로 보내주게 되면 test = '1234' 라는 값이 서버로 전송이 됨.
_postRequest() async {
http.Response response = await http.post(
Uri.parse(baseUrl),
headers: <String, String>{
'Content-Type': 'application/x-www-form-urlencoded',
},
body: <String, String>{'id': 'park', 'password': '1235134aaAA!!@@@##'},
);
}
body에 서버에서 insert할 값들과 values들을 임의로 넣어서 테스트 해보면 아래의 사진과 같은 콘솔이 나오고 데이터베이스에 저장이된다.
class Test extends StatefulWidget {
const Test({Key? key}) : super(key: key);
@override
State<Test> createState() => _TestState();
}
class _TestState extends State<Test> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: [
SizedBox(
height: 200,
),
GestureDetector(
onTap: () {
// fetch();
_postRequest();
print('object');
},
child: const Text('데이터 불러오기'),
),
],
),
),
);
}
}
많은 구글링과 유투브를 찾아보며 공부했지만 ,,, 제대로 이해하려면 많은 시간이 필요할 것 같다...