Node.js 로 Restful 스타일 웹 서 비 스 를 구현 합 니 다.

4656 단어 nodejswebservice
Restful 스타일 의 WebService 는 전통 적 인 SOAP 를 점점 대체 하고 있 습 니 다.자바 도 Restful 의 프레임 워 크 가 많 습 니 다.편리 하고 간결 합 니 다.Jersey,restlet,심지어 SpringMVC 도 가능 합 니 다.Rest 는 사람들 로 하여 금 웹 에서 WebService 로 전환 하 는 것 이 더욱 쉽 고 편리 하 다 고 말 할 수 밖 에 없습니다.물론 Restful 의 이론 에 깊이 들 어가 면 비교적 복잡 한 것 을 발견 할 수 있 지만 개발 과 이론 은 그렇게 부합 되 지 않 습 니 다.때로는 위 Restful 이 더 직관 적 이 고 믿 을 만하 다.
하지만 멋 진 Node.js 로 서 어떻게 똑 같이 멋 진 Restful 과 어 울 리 지 않 을 수 있 겠 어 요!?이론 을 무시 하 는 개발 자 에 게 Restful 은 url 의 규범+HTTP method 의 규범 일 뿐 이 므 로 Node 라 는 자유로운 기술 에 있어 서도 restful 변 화 를 실현 하 는 것 이 매우 정상 적 입 니 다.프레임 은 필요 없 지만 저 는 Express 를 사 용 했 습 니 다.Express 는 원래 의 http 모듈 에 대한 포장 일 뿐 입 니 다.그렇게 따 지지 마 세 요!
자바 는 Xml 프로필 이 횡행 하 는 세상 이 었 습 니 다.지금 은 각종 Annotation(주해)이 난입 하 는 세상 입 니 다.주해 의 침입 성 이 비교적 작 지만 주 해 를 한 무더기 더 하 는 것 도 사람 을 슬 프 게 합 니 다.특히 각 프레임 이 혼 합 된 주 해 는 각 프레임 이 자각 적 이 고 여러 가지 책임 을 지 는 층 이기 때문에 각종 주해 의 혼란 을 초래 하지 않 습 니 다.자,그럼 다음은 어서 오 세 요.주석 도 없고 xml 도 사용 하지 않 은 세상 입 니 다.
나 는 예---

var express = require('express') //     
var app = express() //     
 
var map = {"1":{id:1,name:"test"},"2":{id:2,name:"test"}} //        ,key         java MAP<T,E>,         hash ! 
 
app.get('/devices',function(req, res){ //Restful Get  ,         
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  res.send(map) 
}) 
app.get('/devices/:id',function(req, res){ //Restful Get  ,         
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  res.send(map[req.param('id')]) 
  //console.log(req.param('id')) 
}) 
app.post('/devices/', express.bodyParser(), function(req, res){ //Restful Post  ,         
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  map[req.body.id] = req.body 
  res.send({status:"success",url:"/devices/"+req.body.id}) //id          
}) 
app.put('/devices/:id', express.bodyParser(), function(req, res){ //Restful Put  ,         
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  map[req.body.id] = req.body 
  res.send({status:"success",url:"/devices/"+req.param('id'),device:req.body}); 
}) 
app.delete('/devices/:id',function(req, res){ //Restful Delete  ,         
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  delete map[req.param('id')] 
  res.send({status:"success",url:"/devices/"+req.param('id')}) 
  console.log(map) 
}) 
app.listen(8888); //  8888  ,   ,     tomcat 8080 ! 
나 는 테스트

Postman 으로 ok 을 테스트 합 니 다.코드 에서 유일 하 게 의아 한 것 은 delete map[req.param(id)]입 니 다.js 의 map 가 Object 이거 나 Object 가 map 인 것 을 알 고 있 습 니 다.delete object.property 는 이 속성 을 삭제 할 수 있 습 니 다.하지만 delete Object[Property]도 이 속성 을 제거 할 수 있 습 니 다.delete o.x 도 delete o[x]를 쓸 수 있 습 니 다.둘 다 효과 가 같 습 니 다 delete 에 대해 보 세 요:ECMAScript delete!
묶 든 안 묶 든 편 하 잖 아!XXX 프레임 워 크 코드 랑 비슷 하 잖 아!만약 당신 이 다른 사람 을 찾 는 사람 이 라면 Node.js 도 당연히 당신 을 만족 시 킬 것 입 니 다.항상 논란 이 되 었 던 경로 표 가 등장 합 니 다.
---나 는 다른 파일:routes.js------

{ get:  
  [ { path: '/', 
    method: 'get', 
    callbacks: [Object], 
    keys: [], 
    regexp: /^\/\/?$/i }, 
  { path: '/user/:id', 
    method: 'get', 
    callbacks: [Object], 
    keys: [{ name: 'id', optional: false }], 
    regexp: /^\/user\/(?:([^\/]+?))\/?$/i } ], 
delete:  
  [ { path: '/user/:id', 
    method: 'delete', 
    callbacks: [Object], 
    keys: [Object], 
    regexp: /^\/user\/(?:([^\/]+?))\/?$/i } ] } 
이러한 대상 을 정의 한 다음,

var routes = require('./routes') 
app.use(app.router);//      
routes(app);//      ,          
routes 에 대한 더 많은 내용:Express 홈 페이지   믿 을 만하 다.왜냐하면 node.js 의 가장 큰 문 제 는 바로 자료 의 api 가 너무 낡 았 다 는 것 이다!
Node.js 처리 요청 은 다른 Io 를 포함 하여 모두 비동기 적 이 고 빠 르 기 때문에 성능 에 대해 저 는 비교적 좋 습 니 다.Ab 테스트 결과 에 대해 서도 측정 하고 있 습 니 다.어쨌든 저 는 tomcat 를 순식간에 죽 일 수 있 기 를 바 랍 니 다!(클 러 스 터 아 닙 니 다!)
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기