api接口

python提供的网络接口API和Linux Socket API间的关系探究

跟風遠走 提交于 2019-12-06 06:48:24
首先以一个简单的hello/hi网络聊天程序作为示例,它使用了python提供的Socket API接口,程序的功能就是:客户端向服务器发送一条消息,服务器端返回一条消息给客户端 server.py import socket host='127.0.0.1' port=1234 serv_sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) serv_sock.bind((host,port)) serv_sock.listen(10) #接收客户端套接字 clnt_sock,addr=serv_sock.accept() msg=clnt_sock.recv(1024) str_msg=msg.decode("utf-8") #返回给客户端消息 r_msg="Hi,"+str_msg[10:] clnt_sock.send(r_msg.encode("utf-8")) #关闭连接 serv_sock.close() clnt_sock.close() client.py import socket host='127.0.0.1' port=1234 sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((host,port))

PHP开发api接口安全验证的实例,值得一看

淺唱寂寞╮ 提交于 2019-12-06 06:48:18
php的api接口 在实际工作中,使用PHP写api接口是经常做的,PHP写好接口后,前台就可以通过链接获取接口提供的数据,而返回的数据一般分为两种情况,xml和json,在这个过程中,服务器并不知道,请求的来源是什么,有可能是别人非法调用我们的接口,获取数据,因此就要使用安全验证。 验证原理 示意图 原理 从图中可以看得很清楚,前台想要调用接口,需要使用几个参数生成签名。 时间戳:当前时间 随机数:随机生成的随机数 口令:前后台开发时,一个双方都知道的标识,相当于暗号 算法规则:商定好的运算规则,上面三个参数可以利用算法规则生成一个签名。 前台生成一个签名,当需要访问接口的时候,把时间戳,随机数,签名通过URL传递到后台。后台拿到时间戳,随机数后,通过一样的算法规则计算出签名,然后和传递过来的签名进行对比,一样的话,返回数据。 算法规则 在前后台交互中,算法规则是非常重要的,前后台都要通过算法规则计算出签名,至于规则怎么制定,看你怎么高兴怎么来。 我这个算法规则是 1 时间戳,随机数,口令按照首字母大小写顺序排序 2 然后拼接成字符串 3 进行sha1加密 4 再进行MD5加密 5 转换成大写。 前台 这里我并没有实际的前台,直接使用一个PHP文件代替前台,然后通过CURL模拟GET请求。我使用的是TP框架,URL格式是pathinfo格式。 源代码 <?php /** *

三大认证

▼魔方 西西 提交于 2019-12-06 06:14:39
三大认证 上次讲的 drf 还剩下 三大认证,当然也是从 APIView 的 dispatch 为入口。 def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs request = self.initialize_request(request, *args, **kwargs) self.request = request self.headers = self.default_response_headers # deprecate? try: #这一步就做了三大认证,进去看源码。 self.initial(request, *args, **kwargs) # Get the appropriate handler method if request.method.lower() in self.http_method_names: handler = getattr(self,

python连接mysql数据库

独自空忆成欢 提交于 2019-12-06 05:16:35
Python 操作 MySQL 数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly,mSQL,MySQL,PostgreSQL,Microsoft SQL Server 2000等 不同的数据库你需要下载不同的DB API模块。 MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。 Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。 Python DB-API使用流程: 引入 API 模块。 获取与数据库的连接。 执行SQL语句和存储过程。 关闭数据库连接。   安装   直接使用pip进行安装,在此之前需要安装一些系统依赖包。 CentOS yum install gcc python-devel mysql-devel zlib-devel openssl-devel Ubuntu sudo apt

开始你的api:NetApiStarter

二次信任 提交于 2019-12-06 04:52:16
在此之前,写过一篇 给新手的WebAPI实践 ,获得了很多新人的认可,那时还是基于.net mvc,文档生成还是自己闹洞大开写出来的,经过这两年的时间,netcore的发展已经势不可挡,自己也在不断的学习,公司的项目也转向了netcore。大部分也都是前后分离的架构,后端api开发居多,从中整理了一些东西在这里分享给大家。 源码地址: https://gitee.com/loogn/NetApiStarter ,这是一个基于netcore mvc 3.0的模板项目,如果你使用的netcore 2.x,除了引用不通用外,代码基本是可以复用的。下面介绍一下其中的功能。 登录验证 这里我默认使用了jwt登录验证,因为它足够简单和轻量,在netcore mvc中使用jwt验证非常简单,首先在startup.cs文件中配置服务并启用: ConfigureServices方法中: var jwtSection = Configuration.GetSection("Jwt"); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters

从Function-Based-View到ViewSet——Django Restframework关于views的总结与源码分析

独自空忆成欢 提交于 2019-12-06 00:39:30
简介: 本文是Django restframework官方文档 Quickstart Tutorial 的学习笔记之一, 对views.py的编码风格进行一些总结与讨论. 总结了django rest开发的几种编码风格, 从最基本的function-based-view到class-based-view再到最终的ViewSet,循序渐进,抽象程度越来越高. 官方文档中并没有对此进行单独的介绍,因此本文结合rest_framework源码,对几个概念进行阐述. views.py的编码风格主要有6种, 抽象程度依次提高, 大方向是精简views层的代码,完成MVC到MVVM风格的转换: 基础的Function-Based-View @api_view使用装饰器 class-base-view, 继承APIView 继承mixins generic class-based views 使用ViewSet 1. 基础的function-base-view (本文以一个获取一个定义在models.py当中的model的所有对象的功能(List)为例子) 代码风格: #views.py def some_obj (request) : if request.method == 'GET' : ... return JsonResponse(data) if request.method ==

软件工程

安稳与你 提交于 2019-12-06 00:04:09
1---SDK和api的区别 sdk是架构组把应用代码封装为一个jar(相当与java而言) api是支持远程调用的restful风格的资源访问的接口 sdk中可以封装api 1---复用的重要性 复用是非常一个重要的特性,我们可以根据面向对象语言充分地对非核心业务功能的实现进行封装成一个组件进行使用,但凡有一些麻烦重复的功能,一定需要去想想怎么可以去复用,只有这样才能写出通用性的代码,从而可以尝试写基础组件sdk,为所有的应用程序提供一个统一方便的使用。 来源: https://www.cnblogs.com/fc520/p/11951904.html

用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等

ε祈祈猫儿з 提交于 2019-12-05 23:38:12
本文所需的一些预备知识可以看这里: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/9019314.html 建立Richardson成熟度2级的POST、GET、PUT、PATCH、DELETE的RESTful API请看这里: https://www.cnblogs.com/cgzl/p/9047626.html 和 https://www.cnblogs.com/cgzl/p/9080960.html 本文需要的代码 (右键另存,把后缀改为zip): https://images2018.cnblogs.com/blog/986268/201806/986268-20180604151009219-514390264.jpg 本代码已经更新至ASP.NET Core 2.1 . (从ASP.NET Core 2.0 迁移至 ASP.NET Core 2.1: https://docs.microsoft.com/en-us/aspnet/core/migration/20_21?view=aspnetcore-2.1 ) 本文主要介绍一些常见情况的实现,包括:集合更新、翻页、排序、过滤等等。但是仍然是Richardson成熟度顶多为2级的Web API,未达到RESTful

springboot+swagger接口文档企业实践(下)

↘锁芯ラ 提交于 2019-12-05 20:34:46
目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解 ApiVersion 2.4.2 添加 ApiVersion 过滤 2.4.3 新建指定版本号分组的Docket 3. 接口mock数据 3.1 easy-mock安装 3.2 easy-mock + swagger实现mock数据 3.2.1 创建项目并添加swagger地址 3.2.2 自定义模拟数据 4.接口文档离线导出 4.1 导出swagger的json文档 4.2 导出asciidoc文档 4.2.1 设置文档输出相关插件版本 4.2.2 添加 swagger2markup-maven-plugin 插件 4.2.3 使用命令输出文档 4.3 导出html/pdf文档 4.3.1 添加asciidoctor插件 4.3.2 使用命令输出文档 5. 总结 相关阅读 参考资料 一句话概括:基于springboot+swagger实现接口文档显示后,本文将给出在企业实践的进阶需求,包括接口按需过滤,前端mock数据,文档离线导出。 1.引言 在上一篇文章《 springboot+swagger接口文档企业实践(上) 》已对使用springboot+swagger的接口文档构建及配置进行了介绍

vue.config.js解决跨域问题

对着背影说爱祢 提交于 2019-12-05 20:31:17
需求我们要访问后台的数据,但因为后台的端口号不一致所以需要实现跨域 未跨域 // 请求接口 后台的接口为5001 我们本地的接口为8080,所以我们需要去到vue.config.js配置跨域 http://localhost:5001/api/   this.$axios.post('http://localhost:5001/api/users/register',this.user)   .then(res =>{     // 注册成功     alert('注册成功!')     this.$router.push('/login')     console.log(res)   })//在http全局配置了catch所以这边是不用配置的 } 在当前项目的根路径下新建一个文件,文件名是固定的 vue.config.js —> proxy   module.exports = {     devServer: {       open: true,       host: 'localhost',       port: 8080,       https: false,       //以上的ip和端口是我们本机的;下面为需要跨域的       proxy: { //配置跨域         '/api': {           target: 'http:/