백엔드 Back-end 92

장고django API 서버 개발 - 안드로이드Android retrofit2 이용 시 request body 처리

가끔 아무 것도 아닌 걸로 긴 시간을 보내게 된다. retrofit2에서 이런 식으로 구현했다면 @Headers("Content-type: application/json") @POST("test") Call postTest(@Body TestData testData); 당연히 post로 body로 보내지는 데이터 형태도 json 형태다. request.body.decode('utf-8')을 로그 찍어보면 데이터가 {"name"="ted", "age"=40} 이런 형태로 들어온다. django에서는 따라서 import json body = json.loads(request.body.decode('utf-8')) 이렇게 데이터를 받아야 한다. 하지만 이렇게 받고 있었다. from urllib.parse im..

Q. 장고django 같은 네트워크 상의 다른 기기 접속 허용하는 방법은?

A. 현재 실행 컴퓨터 IP address 나 0.0.0.0를 적어줘야 한다. 그래야 같은 네트워크 상의 다른 기기에서 접속 가능하다. python manage.py runserver 그냥 이렇게만 실행할 경우에는 같은 네트워크 상의 다른 기기에서 접속이 안 된다. 예를 들어 로컬에서 장고 실행시, 같은 네트워크 상의 모바일 기기에서는 장고를 실행한 로컬 컴퓨터의 ip 주소를 192.168.0.3:8000 이런 식으로 넣어도 접속이 안 된다. python manage.py runserver 0.0.0.0:8000 또는 python manage.py runserver 192.168.0.3:8000 로 실행하면 외부에서 접속 가능하다. 이 때 반드시 포트 번호를 적어줘야 한다. 포트 번호는 다른 번호로도 가..

Q. 장고에서 POST방식 x-www-form-urlencoded된 데이터를 딕셔너리로 바꾸는 법은?

A. parse_qsl을 사용하면 된다. 한줄로 끝난다. 주의할 점은 반드시 .decode('utf-8')을 추가해줘야 한다. 추가해 줘야 하는 이유는 request.body의 type이 bytes이기 때문이다. decode로 str으로 바꿔줘야 한다. from urllib.parse import parse_qsl body_data = dict(parse_qsl(request.body.decode('utf-8'))) 개발 환경 python 3.9 django 3.1.6

Q. HTTP POST방식으로 데이터 전송할 때 x-www-form-urlencoded란?

A. url encoding 방식과 같은 형태로 데이터를 전송하는 방식이다. 출처: 개발자를 위한 웹 기술 > HTTP > HTTP 요청 메서드 > POST POST 요청은 보통 HTML 양식을 통해 서버에 전송하며, 서버에 변경사항을 만듭니다. 이 경우의 콘텐츠 유형(Content-Type)은 요소의 enctype 특성이나 , 요소의 formenctype 특성 안에 적당한 문자열을 넣어 결정합니다. application/x-www-form-urlencoded: &으로 분리되고, "=" 기호로 값과 키를 연결하는 key-value tuple로 인코딩되는 값입니다. 영어 알파벳이 아닌 문자들은 percent encoded 으로 인코딩됩니다. 따라서, 이 content type은 바이너리 데이터에 사용하기에..

백엔드 Back-end 2021.02.19

Q. 장고django에서 post, put, delete 방식 사용 위해서 csrf 끄는 방법은?

A. @csrf_exempt 를 사용하면 된다. 참고: csrf란? 사이트 간 요청 위조 API를 만들 경우 CSRF 보안이 필요하지 않다. API 서버는 API Key 등 다른 인증 방식을 사용한다. 그래서 csrf를 끌 필요가 있다. 출처: Cross Site Request Forgery protection from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def my_view(request): return HttpResponse('Hello world') 코드 예는 다음과 같다. from django.http import JsonResponse from django...

파이썬 장고Django request에서 파라미터parameter 값 갖고 오기

GET 방식으로 key란 파라미터의 값을 가져온다면? ?key=1234 key = request.GET.get('key', None) 로 가져오고 만약에 key란 파라미터가 없다면 None이 된다. 참고: django.http.request Documentation self.GET = QueryDict(mutable=True) self.POST = QueryDict(mutable=True) QueryDict에 대한 설명을 찾아보면 다음과 같다. (출처: django.http.QueryDict) QueryDict implements all the standard dictionary methods because it’s a subclass of dictionary. Exceptions are outlined..

파이썬에서 sqlite3 예제 코드 CREATE, INSERT, SELECT, DELETE, UPDATE

간단한 sqlite3 예제 코드다. CREATE conn = sqlite3.connect('student.sqlite') cursor = conn.cursor() cursor.execute("CREATE TABLE student (id INTEGER primary key autoincrement, name char(32), class char(4))") cursor.close() conn.close() INSERT conn = sqlite3.connect('student.sqlite') cursor = conn.cursor() cursor.execute("INSERT INTO student (name, class) VALUES (?, ?)", ['홍길동', '1-1']) id = cursor.lastro..

Q. Python파이썬 웹프레임워크 Django장고 이름의 유래는?

A. Django는 재즈 집시 기타리스트 이름에서 따왔다. 공식 문서를 보면 아래와 같이 설명이 나온다. (출처: Django documentation FAQ: General) What does “Django” mean, and how do you pronounce it? Django is named after Django Reinhardt, a jazz manouche guitarist from the 1930s to early 1950s. To this day, he’s considered one of the best guitarists of all time. Listen to his music. You’ll like it. Django is pronounced JANG-oh. Rhymes with ..

Node.js mysql 모듈 query LIKE % 사용시 에러

mysql 모듈 버전: 2.17.1 코드 예 dbPool.getConnection(function (err, conn) { conn.query('SELECT * FROM book WHERE bookname LIKE "%?%"; ', [q], function (err, results) { //SELECT if (conn != null) { conn.release(); }//DB연결 풀 해제 console.log('results:', results); }); }); 위와 같이 작성하면 원하는 결과물이 나오지 않는다. 원인 그 이유는 ? 대신에 문자열이 들어가면서 SQL 문이 아래처럼 되기 때문이다. 만약 q에 "사랑"이라고 넣었다면, SELECT * FROM book WHERE bookname LIKE "%..

You have an error in your SQL syntax; 에러

MariaDB에 데이터를 입력하려고 하는데 에러가 났다. 에러 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near \'order 원인은? 칼럼, 필드명에 order란 예약어를 썼기 때문이다. 힌트는 use near 다음에 나오는 단어에 있었다. MariaDB Reserved Words: 마리아DB 예약어 MySQL Resverd Words: MySQL 예약어 해결책 칼럼명에 쓴 order를 다른 것으로 바꾸었다.

MySQL 데이터베이스명, 테이블명, 컬럼명은 어떻게 지어야 할까?

database naming conventions라고 검색해 본다. convention은 관습이란 뜻이다. 다른 사람들은 어떻게 이름을 만들어서 쓰고 있을까? dev.mysql.com Write SQL statements in the style of the MySQL Reference Manual SQL keywords and reserved words: uppercase Identifiers (table names, column names, etc.): lowercase (출처: dev.mysql.com) SQL 키워드 예약어는 대문자로 작성 테이블명, 컬럼명 등은 소문자로. SQL Style Guide by Simon Holywell 여기 내용이 좋은 거 같다. (출처: www.sqlstyle.gui..

API 설계 사례 조사: Youtube DATA API 예

구글은 API 어떻게 설계했는지 참고하기 위해서 분석해봤다. 잘 모르면 유명 회사 사례를 따라하는 게 안전하고 쉬우니까. Youtube DATA API 예 (출처: developers.google.com/youtube/v3/docs) YouTube DATA API 설명 YouTube Data API를 사용하면 YouTube 웹사이트에서 일반적으로 실행하는 기능을 사용자의 웹사이트 또는 애플리케이션에 통합할 수 있습니다. 아래 목록에서는 API를 사용하여 검색할 수 있는 다양한 유형의 리소스를 확인합니다. API는 이러한 여러 개의 리소스를 삽입하거나 업데이트 또는 삭제하는 메소드도 지원합니다. 참조 가이드에서는 API로 이러한 모든 작업을 수행하는 방법을 설명합니다. 이 가이드는 리소스 유형별로 정리되어..

백엔드 Back-end 2020.10.28

Node.js 관련 웹사이트, 블로그 모음

Node.js nodejs.org npmjs.com: Node.js 모듈 찾기 mongoDB: NoSQL expressjs.com: Node.js 웹 프레임워크 Expressjs expressjs.com/kr: Expressjs 한글 안내서 expressjs 보안사례: Expressjs 보안 사례, 방법 안내 Node.js 문서Documentation Google Firebase Quickstarts for Node.js Firebase APIs using the Javascript SDK IDE JetBrains WebStorm 자바스크립트 w3schools.com/js: W3SCHOOLS 자바스크립트 w3schools.com/js ES5: W3SCHOOLS 자바스크립트 ES5 w3schools.com..

Node.js mysql 모듈, 데이터베이스에 insert 데이터 입력 뒤 id 값 확인하기

mysql 모듈 Node.js에서 mysql에 접속해서 데이터를 입출력할 때 mysql 모듈을 쓰고 있다. 데이터를 입력한 뒤 id값은 어떻게 확인할까? results.insertId로 확인할 수 있다. 코드 (출처: www.npmjs.com/package/mysql) If you are inserting a row into a table with an auto increment primary key, you can retrieve the insert id like this: connection.query('INSERT INTO posts SET ?', {title: 'test'}, function (error, results, fields) { if (error) throw error; console...

Node.js fast-xml-parser 모듈 테스트, XML을 JSON으로 바꾸기

fast-xml-parser npm 페이지 주소: www.npmjs.com/package/fast-xml-parser 테스트 XML 국토교통부 아파트매매 실거래자료 XML 예 00 NORMAL SERVICE. 27,500 1992 2006 분당로 00212 00000 41135 01 0 3180026 분당동 0035 0000 41135 10100 1 샛별마을(동성) 5 1 41135-18 59.4 35 41135 8 44,000 1993 2006 장안로41번길 00013 00000 41135 01 0 4340380 분당동 0066 0000 41135 10100 1 장안타운(건영) 5 1 41135-32 131.55 66 41135 4 2 1 495 코드 var xml = "\n" + "\n" + "\n"..

Node.js xml2js 모듈 테스트, XML을 JSON으로 바꾸기

xml2js npm 페이지 주소: www.npmjs.com/package/xml2js XML을 JSON으로 JSON을 XML로 바꿔준다. 테스트 XML 국토교통부 아파트매매 실거래자료 XML 예 00 NORMAL SERVICE. 27,500 1992 2006 분당로 00212 00000 41135 01 0 3180026 분당동 0035 0000 41135 10100 1 샛별마을(동성) 5 1 41135-18 59.4 35 41135 8 44,000 1993 2006 장안로41번길 00013 00000 41135 01 0 4340380 분당동 0066 0000 41135 10100 1 장안타운(건영) 5 1 41135-32 131.55 66 41135 4 2 1 495 코드 const xml = "\n" ..