需求:对外网的请求进行转发,进行反向代理的工作(Nginx也可以实现)
实际场景
支付服务拆分出来,放到了内网。但是回调地址不能暴露内网域名(不对外解析),只能通过联通外网的API进行转发。
基础部分
首先要了解REQUEST,即是一次网络请求到达了我们的API地址的过程。简单说是,通过nginx转发到达我们代码部分的过程。
然后要了解请求参数,包括Request URI(GET请求),Request Body(POST请求),Raw(流请求)等请求带着的参数。其中,$_REQUEST可以获取POST和GET请求的参数。php://input可以获取raw类型的参数。
正常请求转发
正常转发很简单,直接$_REQUEST获取所有参数,再把_REQUEST放到放到请求的body里,以form形式转发。也可以json_encode request后,转发成json类型的请求。这样的好处是,当参数为null时不会丢失key。
特殊请求转发
特殊请求的话,$_REQUEST是获取不到参数的,但是使用php://input可以获取到,然后根据请求头的application/json或者是application/xml进行特殊处理,然后进行转发。因为php://input读取的是流形式,读出来是字符串,我是直接转发到服务端,再进行格式处理。