美文网首页
2018-05-20 第八周

2018-05-20 第八周

作者: hobxzzy | 来源:发表于2018-06-14 20:54 被阅读0次

            本周任务:完成http 服务器设计,可以实现api的远程调用

            采取这种解决方案的原因:每次调用模型,需要使用重新解释模型,需要耗费较多的时间,因此采用这种方式,让模型一直加载在后台,仿照网站系统,通过get()和post()函数来传递参数。

            选择python的原因是,我们都是使用python语言来构建模型。

            首先,在本机上进行测试,选用端口号8080

    HTTP响应的结构类似于请求:

    HTTP method:HTTP请求方法。最常用的就是 GET(抓取数据)与POST(更新数据或者上传文件)

    URL:通常是客户端请求的文件的路径,比如 /research/experiments.html, 但是是否响应文件都是由服务器决定的。

    HTTP version:HTTP版本。通常是 HTTP/1.0 或 HTTP/1.1

    header field:HTTP头内的键值对,做一些基本设置,就像下面这样。

    客户端接受的数据类型

    Accept: text/html

    from http.server import HTTPServer, CGIHTTPRequestHandler,BaseHTTPRequestHandler

    import urllib

    port = 8080

    httpd = HTTPServer(('', port), testHTTPServer_RequestHandler)

    print("Starting simple_httpd on port: " + str(httpd.server_port))

    httpd.serve_forever()

    具体获取参数的get()函数,需要在 testHTTPServer_RequestHandler类中:

    class testHTTPServer_RequestHandler(BaseHTTPRequestHandler):

    # GET

        def do_GET(self):

    if '?' in self.path:# 如果带有参数

                self.queryString = urllib.parse.unquote(self.path.split('?',1)[1])

    # name=str(bytes(params['name'][0],'GBK'),'utf-8')

                params = urllib.parse.parse_qs(self.queryString)

    print(params)

    name = params["name"][0]if "name" in paramselse None

                # Send response status code

            self.send_response(200)

    # Send headers

            self.send_header('Content-type','text/html')

    self.end_headers()

    self.wfile.write(bytes("

    hi!

    ","utf8"))

    # Send message back to client

    #message = "Hello world!"

    # Write content as utf-8 data

    #self.wfile.write(bytes(message, "utf8"))

            return

            通过,传递来的url来获取需求参数信息,并且返回输入结果到客户端。

    相关文章

      网友评论

          本文标题:2018-05-20 第八周

          本文链接:https://www.haomeiwen.com/subject/nvlueftx.html