Lambda 를 활용하여 파이선 코드로 RDS에 연동하는 실습을 진행한다.
GET방식
import pymysql
def lambda_handler(event,context):
conn = pymysql.connect(
host='[db주소]',
user='[아이디]',
password='[비번]',
db='[db이름]',
charset='utf8')
curs = conn.cursor()
sql = "SELECT sage FROM student WHERE sname='"+event["sname"]+"'"
curs.execute(sql)
rows = curs.fetchall()
conn.close()
return rows[0][0]
db에서 이름으로 정보 불러오는 html코드
람다에 함수를 추가하고 테스트를 진행하고 성공하면 API 게이트웨이를 설정한다.
api게이트웨이에서는
get 방식으로 설정하고
메서드 요청에 쿼리문자열 추가
통합요청에 이전에 배운 제이슨 받는 설정을 삽입해둔다.
api 배포를 눌러 스테이지를 생성(test)하고
접속해본다
https://[스테이지url]/[스테이지명]/[api명]?[보낼값이름]=[보낼값]
https://[스테이지url]/test/sql_select?sname=pws
작동되면 html코드로 올려보자
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Ajax Request</title>
<script>
function sendRequest() {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == XMLHttpRequest.DONE && httpRequest.status == 200 ) {
document.getElementById("text").innerHTML = httpRequest.responseText;
}
};
var sname = document.getElementById('sname').value;
console.log(sname);
// GET 방식으로 요청을 보내면서 데이터를 동시에 전달함.
httpRequest.open("GET", "[api]?sname="+sname, true);
httpRequest.send();
}
</script>
</head>
<body>
<h1>GET 방식의 요청</h1>
<button type="button" onclick="sendRequest()">GET 방식으로 요청 보내기!</button>
<input id="sname" type="text">
<p id="text"></p>
</body>
</html>
cors 에러!!
POST방식 테스트하기 - 실패.... 더 공부하자
람다에 코드를 삽입하고 테스트후 되면 api와 묶어주자
람다 - 파이선 db에 컬럼추가 함수
import pymysql
def lambda_handler(event,context):
conn = pymysql.connect(
host='[db주소]',
user='[아이디]',
password='[비번]',
db='[db이름]',
charset='utf8')
curs = conn.cursor()
sql = "INSERT INTO student VALUES('"+event["sname"]+"',"+event["sage"]+");"
curs.execute(sql)
conn.commit()
return "success"
연동할 html코드를 생성하자
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>Ajax Request</title>
<script>
function sendRequest() {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == XMLHttpRequest.DONE && httpRequest.status == 200 ) {
document.getElementById("text").innerHTML = httpRequest.responseText;
}
};
// POST 방식의 요청은 데이터를 Http 헤더에 포함시켜 전송함.
var sname = document.getElementById('sname').value;
var sage = document.getElementById('sage').value;
httpRequest.open("POST", "[URL]/insert", true);
httpRequest.setRequestHeader("Content-Type", "application/json");
console.log("{\"sname\":\""+sname+"\",\"sage\":\""+sage+"\"}");
httpRequest.send("{\"sname\":\""+sname+"\",\"sage\":\""+sage+"\"}");
}
</script>
</head>
<body>
<h1>POST 방식의 요청</h1>
<button type="button" onclick="sendRequest()">POST 방식으로 요청 보내기!</button> <br>
이름 : <input id="sname" type="text"> <br>
나이 : <input id="sage" type="text"> <br>
<p id="text"></p>
</body>
</html>
728x90
반응형