티스토리 뷰
예전 글을 읽을 때 마다 드는 생각이 더럽게 글 못 쓴다는 것이다. 그래서 핵심이 뭐냐고 내가 써놓고 내가 이해 못하고 있는 걸 보면 정말 자괴감이 든다.
정리 -
* 보내는 데이터는 content-type이 데이터의 형식과 charset을 지정한다.
* 일반적으로 application/x-www-form-urlencoded; charset=utf-8 로 지정한다. charset이 다르면 다른 것을 설정한다.
1. Spring의 RestTemplate이든 jQuery의 aJax이든 크롬 브라우저이든 http client가 request를 구성해야 한다.
2. 이 request를 구성할 때 중요한 부분 중 하나가 아래 두 가지 이다.
2-1 어떤 형식의 data를 보낼 것인지 - json, xml, form, binary 등 -> content-type
2-2 어떤 encoding을 사용할 것인지 - utf8, euc-kr 등 -> charset
3. 실제로는 3가지 인데,
3-1 어떤 형식의 데이터를 보낼 것인지, json? xml?
3-2 이 데이터를 어떤 encoding으로 보낼 것인지, utf8? euc-kr?
3-3 프로그램 소스에서 data로 전달할 정보의 encoding을 request의 charset에 맞춰줘야 한다.
3-3-1 xml marshalling에서 encoding을 진행하는 하거나 데이터 변환 클래스를 이용하여 변환한다.
3-3-2 Java는 unicode를 사용하므로 utf8을 웹에서 사용한다면 특별히 변환할 필요는 없다.
4. 문제는 request를 보낼 때, 보내는 쪽에서는 데이터가 어떻게 나가는지 알 수가 없다.
4-0 보이는 것은 전부 보내기 전의 decoding된 정보 일 뿐이다.
4-1 이것은 간단하게 node 서버를 만들어 찍어볼 수 있다. 그냥 express 서버 만들어서 찍으면 된다.
5. 하고 싶은 말은
5-1 request header의 content-type이 가장 중요하다. 이것을 정확하게 설정해 주고 다른 것들을 맞추면 된다.
5-2 대부분의 경우 거의 대부분의 경우는 json, xml 같은 거 상관없이
5-2-1 content-type이 application/x-www-form-urlencoded; charset=utf-8 이거면 된다.
5-3 받는 쪽에서 utf8을 사용한다고 하고 xml을 받는다라고 하면 그냥
5-3-1 application/x-www-form-urlencoded; charset=utf-8 보내면 된다.
5-3-2 application/x-www-form-urlencoded 여기에 그냥 모든 데이터를 실어서 보내면 된다.
5-3-3 json, xml은 이렇게 변환되어 보내진 정보를 받은 후에 다시 원래 형식으로 만들 때에 고려할 부분이다.
5-3-4 express에서는 json형식을 받는다면 아래의 middleware를 모두 사용해야 한다는 의미가 된다.
5-3-4-1 express.urlencoded는 application/x-www-form-urlencoded를 해석하고
5-3-4-2 express.json()은 내부의 json형식의 데이터를 복원한다.
5-3-4-3 node에서는 xml의 경우는 string으로 받아서 json형식으로 변환하는 library를 필요로 한다.
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
5-3-4 (x-www-form-urlencoded : (json: data)) 이렇 형식이라고 생각하면 된다.
5-4 encoding도 중요한 부분인데 content-type에 charset에 정확하게 명시하는 것으로 충분하다.
5-4-1 아무리 프로그램 소스에서 charset를 가지고 노력해도 결국 보내는 형식을 지정하는 것은 content-type이다.
5-4-2 content-type에 지정된 charset 형식을 따라 data를 변환하는 것이 프로그램에서 할 부분이다.
'Languages' 카테고리의 다른 글
Golang : Slice value receiver vs pointer receiver (0) | 2021.06.19 |
---|---|
DOM : Vanillla (0) | 2021.05.01 |
JavaScript: delete operator (0) | 2021.04.12 |
Javascript : 기본적인 것들 3 (0) | 2021.02.25 |
JavaScript : 기본적인 내용2 (0) | 2021.02.24 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 스프링
- 자바
- 설정하기
- one-to-one
- jsp
- Spring
- 설정
- hibernate
- Angular
- MYSQL
- RestTemplate
- form
- 외부파일
- 하이버네이트
- mapping
- Validation
- 스프링부트
- one-to-many
- 로그인
- login
- Spring Security
- 매핑
- WebMvc
- Security
- spring boot
- Rest
- 상속
- crud
- XML
- Many-To-Many