首页 > 编程语言 >【一】Ajax与异步编程之web服务端

【一】Ajax与异步编程之web服务端

时间:2023-07-16 15:56:22浏览次数:40  
标签:web name json Ajax 服务端 routes 路由

【一】Ajax与异步编程之web服务端

Ajax属于客户端网络技术,属于js范畴。

  • 基于aiohttp模Ajax与异步编程之web服务端块构建一个提供http协议的web服务器,并准备数据给客户端请求使用。
pip install aiohttp
pip install aiohttp_cors

server.py

from aiohttp import web
import aiohttp_cors

# 路由对象
# 路由[router],是一种用于绑定url地址与服务端应用处理程序[python里面的函数/类方法]之间的映射关系。
# /a1  ---> a函数
# /a2  ---> b函数
# 路由的格式类似hash映射(字典结构)
# {
#     "/a1": a函数,
#     "/a2": b函数,
# }
# 在实际开发中,我们所说的路由,往往也表示在服务端中实现路由关系的类,也叫路由类。

routes = web.RouteTableDef()

@routes.get("/")
async def get_index(request):
    print("hello!, 用户访问进来了!")
    data = [
        {"name": "xiaoming", "age": 17},
        {"name": "xiaoming", "age": 18},
        {"name": "xiaoming", "age": 19},
    ]
    # 返回json数据
    return web.json_response(data)


@routes.post("/")
async def post_index(request):

    # 接受客户端上传过来的请求体数据,并使用json.loads()转换成字典
    data = await request.json()
    print("data=", data)
    # 返回json数据
    return web.json_response(data)


@routes.put("/{name}")  # {name} 变量,当用户通过地址栏使用get请求时,会自动/斜杠后面的内容作为值赋值给name变量
async def num(request):
    # 获取url地址的一部分,这个叫路由参数
    name = request.match_info.get('name', "Anonymous")
    # 返回json数据
    return web.json_response({"name": name, "age": 19})


class Application(web.Application):
    def __init__(self, routes):
        """
        :param routes: url和服务端处理程序之间的绑定关系, 这种绑定关系,我们一般称之为路由,当然,在服务端开发中,我们也会经常把具有路由功能功能的类/对象,称之为"路由类"或"路由对象"
        """
        print(routes._items) # 路由列表
        # 先让官方的aiohttp的web框架先进行初始化
        super(Application, self).__init__()
        # 注册路由信息到web框架中,routes是一个list列表
        self.add_routes(routes)

        # 这里内部完成了一个for循环,把routes里面每一个路由信息都了遍历,添加一个返回值用于实现跨域资源共享[CORS]。
        cors = aiohttp_cors.setup(self, defaults={
            "*": aiohttp_cors.ResourceOptions(
                allow_credentials=True,
                expose_headers="*",
                allow_headers="*",
            )
        })

        # Configure CORS on all routes.
        for route in list(self.router.routes()):
            cors.add(route)


if __name__ == '__main__':
    web.run_app(Application(routes),host="0.0.0.0",port=8000)

标签:web,name,json,Ajax,服务端,routes,路由
From: https://www.cnblogs.com/dream-ze/p/17557951.html

相关文章

  • 【三】Ajax与异步编程之数据传输格式ajax
    【三】Ajax与异步编程之数据传输格式ajax【1】什么是ajaxajax,一般中文称之为:"阿贾克斯",是英文“AsyncJavascriptAndXml”的简写译作:异步js和xml传输数据技术。ajax的作用:ajax可以让js代替浏览器向服务端程序发送http请求,与服务端进行数据通信,在用户不知道的情况下......
  • 【五】Ajax与异步编程之异步编程
    【五】Ajax与异步编程之异步编程【1】异步编程js默认是单线程运行的,这意味着两段代码不能同时运行,所以在同步代码执行过程中,代码是逐行地运行的。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。关于在javascript中异步编程的方式......
  • 【四】Ajax与异步编程之数据传输格式ajax同源策略和跨域方案
    【四】Ajax与异步编程之数据传输格式ajax同源策略和跨域方案【1】同源策略同源策略(ameoriginpolicy),是浏览器为了保护用户信息在服务端的安全的而设置一种安全机制。所谓的同源就是指代通信的两个地址(例如服务端接口地址与浏览器客户端页面地址)之间比较,是否协议、域名(IP)和......
  • python通过Websocket与html主动通讯
    python通过Websocket与html主动通讯导语:在Web开发中,实现实时通信是一项常见的需求。本文将介绍如何使用Python和WebSocket技术实现与HTML页面的实时通信,以显示当前的实时时间。1.WebSocket简介WebSocket是一种全双工通信协议,允许在客户端和服务器之间建立持久连接,实现实时数据......
  • webhook
    作用范围kube-apiserver请求处理全流程webhook可以作用于准入。准入控制回调时,MutatingAdmissionWebhook可以修改对象,ValidatingAdmissionWebhook可以拒绝请求。参考资料深入理解KubernetesAdmissionWebhook......
  • FeignClient服务端接口404问题
    自定义feignClient,服务端继承client接口,调用出现404异常。问题原因:feignClient接口的实现类上使用@Controller或@RestController的value属性中写入了公共url,导致接口方法404;因为feignClient是根据服务名在注册中心拉取到服务然后路由到feignClient接口的实现类上,跳过了类上的url......
  • VUE WebSocket连接成功后,立即发送一个token
    ws=newWebSocket(ws://${location.host}/xxx)ws.onopen=()=>{ws.send(JSON.stringify({headers:{Authorization:Bearer${token}}}));isConnected.value=true;}查看方法:在消息数据里(不是标头里)......
  • Web
    Web一.web:全球广域网,也称为万维网(wwwWorldWideWeb),能够通过浏览器访问的网站。二.web网站开发模式:三.web标准:1.web标准:也成为网页标准,大部分由W3C(WorldWideWebConsortium万维网联盟)负责制定。2.三个组成部分:(1)HTML(HyperTextMarkupLanguage):负责网页的结构(页面元素......
  • JavaWeb
    JavaWeb基本概念1.1前言web开发:web:网页的意思静态webhtml,css提供给所有人看的数据始终不会发生变化动态web提供给所有人看的数据始终会发生变化,每个人在不同的时间不同的地点看到的信息各不相同。几乎所有的网站。技术栈:Servlet/JSP,ASP,PHP......
  • Python使用Flask开发Web服务-裴-从0到1创建Flask程序
     static下面放一些静态文件图片、css等,templates下面放置模板编写好的html文件等; app.run() 通过app.route找到要运行的函数,函数中通过render_template将参数传递给HTML模板文件,HTML中将提取出的数据展示出来; ......