API的小结===一定要看

本文介绍了API接口的相关知识,包括如何解决跨域问题,前端调用接口时的注意事项,接口安全的实现,如加密、解密、签名、防刷策略,以及如何利用Redis限制接口访问频率。还讨论了注册接口的实现、鉴权机制、重放攻击防护以及RESTful接口设计规范。此外,提到了Linux、PHP、Nginx、Redis等相关技术和操作。
摘要由CSDN通过智能技术生成

4月7日:

1、composer干什么的?

composer 是 php的 依赖管理工具。



依赖:
	A类 -> B类
在没有composer之前:
	include  a.class.php
	include b.class.php

	$obj = new A();

有了composer之后,composer会自动把需要的类加载进来。

	$obj = new A();

2、Linux安装Composer:

1、下载php-composer,执行下列命令其中一个即可,下载成功之后会在目录下产生一个composer.phar的文件

(1)curl -sS https://getcomposer.org/installer | php


(2)php -r "readfile('https://getcomposer.org/installer');" | php


2、把composer移动到 /usr/sbin

	mv composer.phar  /usr/sbin/composer

	添加权限:
	chmod +x  /usr/sbin/composer

3、输入composer 出现提示页面说明安装成功

	composer -v

3、composer切换镜像源:

1、打开链接

	https://developer.aliyun.com/composer

2、切换镜像源为阿里云

	composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

3、下载Laravel框架。

创建API的项目:
composer create-project --prefer-dist laravel/laravel api -vvv

创建H5的项目:
composer create-project --prefer-dist laravel/laravel h5 -vvv

4、可能会遇到的错误:

红色提示: proc_open 错误:  【 因为安全原因,proc_open函数被禁用了 】

解决:
	(1)通过 find 找到php.ini

		find / -name php.ini

	(2) php的配置文件的目录在
		/usr/local/php/etc/php.ini

	(3) 打开php的配置文件
		vim /usr/local/php/etc/php.ini

	(4) 在vim的普通模式下  输入 
		/disable_functions 
	(5)点击回车搜索,在这一行前边加上 ; 
		保存退出 :wq

	(6)重启php-fpm
		killall phpf-fpm
		/usr/local/php/sbin/php-fpm

Connection time out :

	连接超时,把当前目录删除了,重新执行composer进行下载

5、php关于 disable_functions
指的是php的禁用函数。
system: 执行一些系统的命令

6、LNMP:

L: Linux 
N: Nginx
M: MYSQL
P: php

LAMP:
L: Linux
A: Apache
M: MYSQL
P: php

7、Linux使用Nginx如何配置域名:

Nginx的安装路径:
	/usr/local/nginx
Php的安装路径:
	/usr/local/php
Mysql:
	/usr/local/mysql

配置Nginx域名的过程: 【外网域名】

	1、先把域名解析到阿里云的服务器上

	2、在本地的命令行窗口 ping 一下 刚配置的域名

	3、找到nginx的配置文件

		/usr/local/nginx/conf/nginx.conf

	4、在Nginx配置文件的最后添加,在{}中添加
		include conf.d/*.conf;

		【加载当前目录下的conf.d下的 以conf结尾的文件】
	
	5、在/usr/local/nginx/conf/创建一个conf.d的目录
		mkdir conf.d

	6、在/usr/local/nginx/conf/conf.d目录下创建文件
		vim  1908api.phpclub.top.conf

		把一个完整的server 复制进去


	7、修改server name 和 root 
		root  访问的目录,指定到laravel框架的public
		server_name  配置成我们的域名

	8、重启下我们的Nginx
		/usr/local/nginx/sbin/nginx -t 【检查一下nginx配置是否正确】
		/usr/local/nginx/sbin/nginx -s reload

	9、访问一下我们的域名 出现laravel框架欢迎页面说明ok

8、阿里云域名解析:

记录类型:A  讲域名解析到ipv4的地址
		CNAME  讲一个域名指向另外一个域名

9、服务器提示500错误,没有显示出来具体的错误信息,如何解决?

问题主要原因:
	服务器没有开启php相关的报错。

如何解决: [在php.ini中需要修改配置]

	1、 vim /usr/local/php/etc/php.ini

	2、搜索 display_errors  【 是否显示php相关的错误 】

		把配置项从 off 修改为 on

	3、重启php-fpm
		killall php-fpm
		/usr/local/php/bin/php-fpm

laravel框架可能是 app_debug 没有开启,
	(1)在laravel框架下找到 app_debug选项  把false 改成true

	(2)   'env' => env('APP_ENV', 'dev'),

		    'debug' => (bool) env('APP_DEBUG', true ),

Linux命令:

# 查找文件的命令
find 目录 -name php.ini

# vim 搜索关键字
在普通模式下:
	输入 /要搜索的内容

重启php-fpm
	killall phpf-fpm
	/usr/local/php/sbin/php-fpm

杀死进程:
	killall 进程名字

查看进程使用

	ps -ef | grep nginx

修改权限
	chmod 

修改用户组:
	chgrp

修改所有者:
	chown

查看端口使用情况
	netstat -ntlpu

查看服务器的内存:
	free 
	free -m 按照mb查看
	free -g  按照gb查看

查看占用系统资源比较多的进程:
	top命令

Linux下的文件都是归属用户的,而用户呢,归属于用户组。

这样的话话就意味着文件属于某个用户和某个用户组。

ll的时候可以看到文件的用户和用户组
d rwx r-x r-x 2 root root 4096 7月 18 2019 openssl

  • rw- r-- r-- 1 root root 1802240 3月 23 2019 php-7.3.3.tar.gz

d 代表的是目录 (dir)

  • 代表的是是一个文件 (file)

第一个root代表的是 所有者
第二个root代表的是 所属组

后边9个字母代表的是具体的权限:

rwx read write exec
4 2 1

其中三个三个一组:

前三个 rwx 自己的权限 【所有者、所属者】 u = user
中间三个 rwx 组内用户的权限 【所在组、所有组】 g = group
后三个 rwx 其他用户的权限 o = other

chmod 777 代表的是:

7代表的是 4 + 2 + 1
第一个7代表的是 自己的权限
第二个7代表的是 组内用户的权限
第三个7代表的是 其他用户的权限

chmod +x 给所有人都加上执行的权限

给组内用户加权限:
chmod g+x 文件名

4月8号:
apk: android application package
ipk: Ios application package

API基本认知:【应用程序接口】
application programing interface

php是运行在服务端的脚本语言。

客户端软件:
需要把安装包下载下来,安装在终端设备上。

为什么要写API接口?

因为客户端的程序,运行在客户端,如果要操作数据库,需要把数据库相关信息硬编码到程序中

而客户端的程序可能会被反编码【把代码解析回来】,数据库相关信息都会暴露出来,不安全、

所以客户端不允许直接访问mysql


为了解决这个问题,所以就产生了API接口。因为一般API都是运行在服务端的,服务端的脚本语言相对比较安全

客户端的程序通过 访问接口去访问数据库。

API可以用什么语言进行开发:
php、java、python、.net【asp】 、 nodejs、 go等等

使用接口开发的好处:
1、可以做到统一的修改,如果统一使用接口,可以直接修改接口,所有的地方都会跟着修改。
2、方便系统去创建一些安全策略、
3、接口可以实现统一的管理,数据都从接口出去。
4、移动互联网成为主流,客户端的程序,必须要使用到接口。

如何去写一个接口?

做接口之前的准备工作:

1、接口文档

	(1)告诉别人如何调用你的接口
			get post   
			是否需要加密、签名等等

	(2)接口的用途
				
	(3)接口的地址  http://api.com/user/login

	(4)接口的请求方式  get post请求

	(5)输入的参数

	(6)返回的数据

	(7)输入参数的一个实例

	(8)能给出调用接口的实例代码

接口返回的数据: xml json

接口返回的数据,统一为JSON格式。

如何调用接口:
file_get_contents [用的比较多]
curl [用的比较多]
fopen
fsockopen
socket

给接口传递数据:

1、接口中的所有参数,必传参数必须传递

2、根据接口的请求方式,使用对应http请求方式吧数据传递到服务端

3、如果接口需要数据,需要吧数据拼接成数组格式,把所有的数据节点放入data中,把整个数据传递到API段,
   API接受数据的时候,会直接取传递到数据下的 data节点

	demo:
		$arr = [
			'user_name' => 'zhangsan',
			'password' => '123456'
		];

		$api_request_arr['data'] = $arr;

同源策略:

A网站去请求B网站的接口。

为什么要有同源策略?
	为了保证网站的安全,浏览器会限制我们的网站,发起请求只能请求本域名下的接口。

同源策略的要求:
	(1)同域名
	  【
		http://1908h5.phpclub.top/login
		http://1908api.phpclub.top/login
		】
	(2)同端口 
		【http://1908h5.phpclub.top:80 http://1908h5.phpclub.top:81】
	(3)同协议 ( http和https协议 )
		http://1908h5.phpclub.top/login
		https://1908h5.phpclub.top/login

跨域问题:
	http://1908h5.phpclub.top/login它请求了另外一个域名【http://1908api.phpclub.top/login】下的接口。

主域名:
	phpclub.top

一级域名:[ 域名前边是www这个是一级域名 ]
	www.phpclub.top	

除了一级域名之外,其他的域名统一被称为子域名。
二级域名:
	1908h5.phpclub.top 【二级域名】
	1908api.phpclub.top
三级域名:
	android.api.phpclub.top

http://1908h5.phpclub.top/login
http://1908api.phpclub.top/login

用户表中的随机码:

用户表中的盐值字段,是用来防止相同的密码在数据库中存储的结果是一样的。

给每个用户都生成一个随机码(盐值),在存储用户的密码的时候,需要把 密码和随机码都存起来。

密码存到数据库的时候,把密码和随机码 一块md5 生成的结果存入数据库中。

如何解决跨域问题?

1、JSONP

	放服务端返回一段js代码,通过执行js代码,回调对应的方法中。

	JSONP格式只支持GET请求,是没有办法发送POST请求的。

	通过回调函数的方式解决跨域问题。

	(1) 把ajax请求返回的数据格式修改为 JSONP格式 

	(2) 在ajax中添加 jsonpCallback:logincallback参数,

	(3) 在页面中添加一个 function logincallback(){} 

	(4) ajax会发送一个get请求,并且希望是返回值是jsonp格式

	(5) 服务端接受 callback参数,把返回的数据 放到 logincallback( JSON数据 ) 。

	(6) 客户端就能获取到跨域名下的json数据了


2、让服务端可以指定 特定的域名可以请求

	// 允许http://1908h5.phpclub.top发起的跨域请求  
	header("Access-Cont
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值