2018-05-20 第八周

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

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

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

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

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

2018-05-20 第八周_第1张图片

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 第八周_第2张图片


2018-05-20 第八周_第3张图片

你可能感兴趣的:(2018-05-20 第八周)