zoukankan      html  css  js  c++  java
  • ☀【Node】处理POST请求

    Node入门 √
    http://www.nodebeginner.org/index-zh-cn.html

    index.js

    var server = require("./server")
    var router = require("./router")
    var requestHandlers = require("./requestHandlers")
    
    var handle = {}
    handle["/"] = requestHandlers.start
    handle["/start"] = requestHandlers.start
    handle["/upload"] = requestHandlers.upload
    
    server.start(router.route, handle)

    server.js 服务器

    var http = require("http")
    var url = require("url")
    
    function start(route, handle) {
        function onRequest(request, response) {
            var postData = ""
            var pathname = url.parse(request.url).pathname
            console.log("Request for " + pathname + " received.")
    
            request.setEncoding("utf8")
    
            request.addListener("data", function(postDataChunk) {
                postData += postDataChunk
                console.log("Received POST data chunk '" + postDataChunk + "'.")
            })
    
            // 监听 /start /upload 的请求,/start 没有post也有end
            request.addListener("end", function() {
                route(handle, pathname, response, postData)
            })
    
        }
    
        http.createServer(onRequest).listen(8888)
        console.log("Server has started.")
    }
    
    exports.start = start

    router.js 路由

    function route(handle, pathname, response, postData) {
        console.log("About to route a request for " + pathname)
        if (typeof handle[pathname] === 'function') {
            handle[pathname](response, postData)
        } else {
            console.log("No request handler found for " + pathname)
            response.writeHead(404, {"Content-Type": "text/plain"})
            response.write("404 Not found")
            response.end()
        }
    }
    
    exports.route = route

    requestHandlers.js 请求处理程序

    var querystring = require("querystring")
    
    function start(response, postData) {
        console.log("Request handler 'start' was called.")
    
        var body = '<!doctype html>' +
        '<html lang="zh-CN">' +
            '<head>' +
                '<meta charset="utf-8">' +
                '<title></title>' +
            '</head>' +
            '<body>' +
                '<form action="/upload" method="post">' +
                    '<input name="title" type="text">' +
                    '<textarea name="description"></textarea>' +
                    '<input type="submit" value="Submit text">' +
                '</form>' +
            '</body>' +
        '</html>'
    
        response.writeHead(200, {"Content-Type": "text/html"})
        response.write(body)
        response.end()
    }
    
    function upload(response, postData) {
        var body = '<!doctype html>' +
        '<html lang="zh-CN">' +
            '<head>' +
                '<meta charset="utf-8">' +
                '<title></title>' +
            '</head>' +
            '<body>' +
                querystring.parse(postData).title +
                querystring.parse(postData).description +
            '</body>' +
        '</html>'
        console.log("Request handler 'upload' was called.")
        response.writeHead(200, {"Content-Type": "text/html"})
        response.write(body)
        response.end()
    }
    
    exports.start = start
    exports.upload = upload
  • 相关阅读:
    golang mod 导包
    grpc client 报错: code = Unimplemented desc = method *** not implemented
    golang读取email
    docker 使用
    在word中批量更改Mathtype公式的格式
    word中插入myth type公式行距变大的问题
    word中编辑论文公式对齐问题
    向别人学习
    机器学习 博文汇总
    matlab中如何用rand产生相同的随机数
  • 原文地址:https://www.cnblogs.com/jzm17173/p/3330998.html
Copyright © 2011-2022 走看看