구현 단계
1. 쿼리 인터페이스
웹 사이트에는이 유형의 몇 가지 인터페이스가 있습니다. 저자는 바이두지도의 인터페이스를 직접 찾았습니다. 호출 된 API는 지오 코딩 API의 지오 코딩 서비스입니다.
요청 예 : 베이징에있는 바이두 빌딩의 지오 코드 쿼리
http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderOption&output=json&address=百度大厦&city=北京市
이를 위해서는 AK 매개 변수가 필요하며, 이는 응용 프로그램을 작성할 때 사용자가 생성 한 문자열이며 데이터를 요청할 때 호출해야합니다.
[알아채다]
생성 된 응용 프로그램은 서버 측 유형입니다
응용 프로그램을 만들 때 선택할 수있는 두 가지 검증 방법이 있습니다. IP 화이트리스트 확인을 사용하거나 확인을 위해 SN을 사용하도록 선택할 수 있습니다. 둘의 차이점은 IP 주소를 미리 요청할 때 IP 주소를 설정해야한다는 것입니다. Dead IP 주소를 미리 설정하지 않으려면 SN 확인을 선택할 수도 있습니다. 이것은 MD5를 암호화 알고리즘으로 사용하는 검증 방법입니다.
저자는 처음에 검증을 위해 SN을 선택했지만 MD5 서명을 생성하고 계속 확인하기 위해 Crypto라고 불렀습니다. 그는 대신 IP 화이트리스트를 검증으로 만 사용할 수있었습니다.
2. Nodejs 쿼리
통화 인터페이스를 사용하면 데이터를 요청하기 위해 작은 스크립트를 작성할 수 있습니다. 우리는 Express, SuperAgent 및 EventProxy의 세 가지 종속성이 필요합니다
Express는 가벼운 웹 응용 프로그램입니다
SuperAgent는 크롤러가 자주 사용하는 라이브러리로 다양한 요청을 시뮬레이션 할 수 있습니다.
EventProxy는 동시 컨트롤러입니다
* 간단한 쿼리
먼저, 지리적 위치를 얻을 수 있는지 여부를 감지하기위한 간단한 요청을 작성해 봅시다.
app.get ( '/one', function (req, res, next) {var sk = 'yoursk'// 응용 프로그램의 sk, address = 'beijing'; superagent.get ( 'http://api.map.baidu.com/geocoder/v2/') .query ({resident : address :}). sk}) .end (function (err, sres) {if (err) {console.log ( 'err :', err); return;} res.send (sres.text);})}) 그런 다음 브라우저를 열면 http://localhost:8888/one 방문하십시오
{상태 : 0, 결과 : {위치 : {LNG : 116.39564503787867, LAT : 39.9299857808024}, 정밀 : 0, 신뢰 : 10, 레벨 : "City"}이 정보를 볼 수 있으면 인터페이스가 성공적이라는 의미입니다. 상태가 0이 아닌 경우 리턴 코드 상태 테이블을 참조하십시오.
요청을 위해 서버를 열어야하는 이유는 무엇입니까? 우리가 만든 응용 프로그램은 서버이므로 요청하려면 서버를 빌드해야합니다.
* 배치 쿼리
좋아, 도시는 쿼리 될 수있다. 다음으로 우리는 여러 도시를 쿼리 할 것입니다. 동시성 제어를 위해 EventProxy를 사용합니다. 당신은 그것을 카운터로 생각할 수 있습니다. 이벤트를 듣고 해당 함수 n 번 실행하도록 명령 할 수 있습니다.
키 코드는 다음과 같습니다.
app.get ( '/mange', function (req, res, next) {var sk = 'yoursk', address = [ 'beijing', 'shenzhen', 'guangzhou', 'puning']; ep.after ( 'getLocation', addrenges.length, function (loces.send); s (e) (e). superAgent.get ( 'http://api.map.baidu.com/geocoder/v2/') .query ({resident : e}) .query ({output : 'json'}) .query ({ak : sk}) .end (ert, err, sres) {ep.emit ( 'getlocation', e, e, e, e, e, e, e, rest. })})})})) 액세스하려면 브라우저를 엽니 다 : http://localhost:8888/many
[{주소 : "Beijing", Res : "{"status ": 0,"result ": {"location ": {"lng ": 116.39564503787867,"lat ": 39.929985777808024},"정확한 ": 0,"}}} "shenzhen", res : "{"status ": 0,"result ": {"location ": {"lng ": 114.0259736573215,"lat ": 22.546053546205248},"정확한 ": 0,"Conferidence ": 14,"level ":"}}}}}}}}}}}} City ", res :"{ "status": 0, "result": { "location": { "lng": 113.30764967515182, "lat": 23.12004910207623}, "정확한": 0, "자신감": 12, "레벨": "City"}} "}, {pening city", res. "{"status ": 0,"result ": {"location ": {"lng ": 116.07816590835329,"lat ": 23.28895358314155},"정확한 ": 0,"자신감 ":"14, "레벨": "지구"}} "}]좋아, 배치 쿼리에는 아무런 문제가 없다. 다음으로 Nodejs를 사용하여 백그라운드 엔지니어가 던진 Excel 파일을 읽습니다.
3. nodejs 파일을 읽고 쓰십시오
이번에는 두 가지 종속성이 더 필요합니다. 하나는 Nodejs 용 FS 모듈이 내장되어 있으며, 하나는 Excel을 읽고 쓰는 Node-XLSX 라이브러리입니다.
도시의 Excel 파일을 루트 디렉토리에 던지고 다른 스크립트 xls2js.js를 시작하십시오.
var xlsx = require ( 'node-xlsx'), fs = require ( 'fs'); var file_path = './query_result.xlsx ';var file_data = xlsx.parse (file_path);
그런 다음 fs.writefile에 전화하여 추출 된 도시를 다음 코드로 작성하십시오.
file_data.foreach (function (sheet, index) {var sheetname = sheate.name // table name, sheetdata = sheet.data // table data, sheethead = sheetData [0] // 첫 번째 행은 일반적으로 헤더이지만 특정 하나는 아니지만, sheetdata.slice (1) // real _pathrite = ', astatic/adtates.json. , Cities_name = []; // City의 데이터를 Sheetbody에 씁니다. function (e, i) {cities_name.push ( '' + e [1] + ',' + e [2]}) json.stringify ({cities_name : cities_name}); function (err) {if (err) console.log ( '쓰기 실패', else console.log;static/address.json 파일을 열면 다음 형식으로 텍스트가 표시됩니다.
{ "Cities_Name": [ "Beijing, Beijing", "Beijing, Municipal District", "Tianjin, Tianjin"]}4. 포괄적 인 단계 2와 3은 지역 도시 파일, 쿼리 배치를 읽고 새 파일을 쓰는 인터페이스를 실현합니다.
좋아,이 파일을 사용하면 다시 읽은 다음 배치 쿼리를 수행 할 수 있습니다.
app.get ( '/', function (req, res, next) {var sk = 'yoursk', address = [], file_path = './static/address.json', file_path_towrite = './static/geocoder.json', file_data; fs.readfile (file_path, function, data) {eRR) err); return} file_data = json.parse (data); [e [ 'location'] [ 'lng'], e [ 'location'] [ 'lat']); }) 주소 (function (e, i) {superAgent.get ( 'http://api.map.baidu.com/geocoder/v2/') .query ({address : e.split ( ','). .query ({ak : sk}) .end (function (err, sres) {var location, res_json; res_json = json.parse (sres.text); if (res_json.status == 0) {res_json.result && res_json.result.location || '; { "lng": 0, "lat": 0};5. 지리적 위치를 입력하여 지리적 위치의 배치 쿼리를 수행 할 수있는 웹 페이지를 구현하십시오.
이것들은 프론트 엔드입니다. 좋아 보이면 글을 쓰는 방법
6. 요약
위는 NodeJS를 사용하여 위도 및 경도 인터페이스의 배치 쿼리를 구현하는 모든 내용입니다. Nodejs를 사용하는 모든 사람에게 도움이되기를 바랍니다.