node-http创建服务端和客户端

http模块是nodeJS的核心模块。它可以创建客户端(发起请求)和服务端(监听请求)。

1. 客户端client

应用:

1. 爬虫

2. 中间层-解决跨域问题

let http = require(‘http‘);

// 服务端发送的请求不存在跨域问题
let client = http.request({
  hostname: ‘localhost‘,
  port: 3000,
  path: ‘/aaa?name=lyra‘,
  method: ‘POST‘,
  headers: {
    ‘Content-Type‘: ‘application/x-www-form-urlencoded‘
  }
}, function(response) {// response可读流
  response.on(‘data‘, function(data) {
    console.log(JSON.parse(data.toString()));
  })
});
// client相当于可写流
client.end("a=1&b=2");// 发送请求体

2. 服务端server

let http = require(‘http‘);
let querystring = require(‘querystring‘);
let url = require(‘url‘);

let server = http.createServer(function(request, response) {// 监听函数;请求到来时触发
  /////////// request-->可读流
  /****1. 请求行***/
 console.log(request.method.toLowerCase());// 大写
 console.log(request.url); // 端口号后面的部分;不包含hash; eg: /aaa?a=b
  const {pathname, query} = url.parse(request.url, true); // true表示解析成对象
  // pathname: /aaa   query: {a: ‘b‘}
 console.log(request.httpVersion);
  /****2. 请求头***/
 //console.log(request.headers); // 所有属性名小写
  /****3. 请求体***/
  // 请求体通过监听data获取;on监听的回调是异步执行
  let arr = [];
  request.on(‘data‘, function(data) {// 只有请求体有内容,才会触发
    arr.push(data);
  });
  request.on(‘end‘, function(err) { // 不论请求体是否有内容,总会触发
    let content = Buffer.concat(arr).toString(); // username=lyra
    // 可写流的参数只能是字符串和buffer
    if (request.headers[‘content-type‘] === ‘application/x-www-form-urlencoded‘) {
      let result = JSON.stringify(querystring.parse(content));// =parse(content, ‘&‘, ‘=‘)
      /////////// response-->可写流(字符串或者Buffer)
      /******1. 响应行 */
      response.statusCode = 200; // 必须是有效状态码
      /******2. 响应头 */
      response.setHeader(‘Content-Type‘, ‘application/json‘);
      /******3. 响应体 */
      // end前面还可以使用write方法
      response.end(result); //立即触发;应该放置在end回调中
    }
  })
});
// 监听特定的端口和IP
/**
 * 端口号最大65535;一般使用3000+的端口,因为很多会被占用
 */
server.listen(3000, ‘localhost‘, () => {
  console.log(‘3000 started‘);
})

3. nodemon

node monitor。实时监控node服务的内容变化,自动重启服务。

命令:

nodemon 具体文件

4. curl

从命令行发起http请求

// 通过命令行发起http请求
// GET
curl -v http://localhost:3000  //-v查看信息
// POST
curl -v -X POST -d "username=lyra"//localhost:3000 //-X 指定请求方式  -d 指定传递数据
// 带请求头
curl -v --header "Range:bytes=0-3"  http://www.baidu.com

原文地址:https://www.cnblogs.com/lyraLee/p/12183095.html

时间: 2024-07-31 07:37:34

node-http创建服务端和客户端的相关文章

java中socket创建服务端与客户端即时对聊

package tool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; impo

socket创建服务端和客户端

看情况选择相对应的套接字*面向连接的传输--tcp协议--可靠的--流式套接字(SOCK_STREAM)*面向无连接的传输--udp协议--不可靠的--数据报套接字(SOCK_DGRAM) 在liunx中  telnet ip port 可以当成临时客服端 服务端示例: 创建服务端示例: from socket import * #创建套接字(参数:地址族类型,套接字类型,选定子协议类型) sockfd = socket(AF_INET,SOCK_STREAM,proto = 0) #绑定地址(

Cocos2dx3.x使用socket创建服务端和客户端改进

由于一个网友使用笔者写的SocketClient作为游戏客户端网络数据接收类,出现了一些问题 这个问题就是因为当执行onRecv时创建了一个Sprite(Sprite::create("1.png")),而创建完成后sprite的数据混乱,或者MoveTo时返回的也是混乱数据.原因在于在多线程申请内存,在主线程使用就会出现问题.为了解决这个问题,特意看了cocos2dx的WebSocket的实现方式,发现当接收到数据时并不是立即调用回调函数,而是将数据信息加入到消息队列,当主线程更新时

利用IDEA创建Web Service服务端和客户端的详细过程

创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 WebServices ,再选 Generate Wsdl From Java Code ,确定 点击ok会自动给我们生成HelloWorld.wsdl,画红线处注意 四.配置tomcat,此处不多说,主要是配置好tomcat后还需要加入 Axis 的库 点击右下角fix即可,重新启动 tomcat ,在浏览器中输入:ht

[.Net Core] - 在 .NET Core 中创建 gRPC 服务端和客户端

gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户端 2.1 基于控制台应用程序模板创建 gRPC Client 项目,并安装 Nuget 包(Google.Protobuf,Grpc,Grpc.Core,Grpc.Tools). 2.2 拷贝 Server 项目中的 Protos/greet.proto 文件到 Client 项目中 2.3 更新

IDEA创建Web Service服务端和客户端

1.  创建服务端 第一步:File–>New–>Project:我这里使用原生JDK来开发Web Service Server服务,所以不勾选Generate Sample Server Code,意思是不使用Apache Axis,也不生成Apache Axis代码.选中Set up library later表示暂时不设置依赖包. 第二步:输入项目名称 项目结构如下: PublishWebService.java 1 package com.suns.webservice.server;

node.js模拟抄表 tcp服务端和客户端

2015-11-18 09:38:01 服务端 var net = require('net'); var server = net.createServer(function (socket) { socket.on('data', function (data) { console.log(data); // data = JSON.parse(data); console.log('此次需要的类型是:' + data.transType); if (data.order == 'order

python thrift 服务端与客户端使用

一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. 二.安装 1.下载地址 http://www.apache.org/dyn/closer.cgi?path=/thrift

socket服务端和客户端

#!/usr/bin/env python#encoding: utf-8import socketdef handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, World") def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREA