React 公共文件夹中的 PHP 文件(在本地主机上测试)

问题描述 投票:0回答:1

目前我正在处理 React 文件夹,在公共文件夹中有一些 PHP。

结构

.
├── pubic
│   ├── api
│        └── co.php
├── _src
│   ├── api
│   └── components
│   └── index.tsx
├── package.json
└── node_modules

公用文件夹包含更改对客户端/API 服务器的请求/响应的 PHP 文件(由 diff 公司制作)。

我在公用文件夹中添加了另一个端点/PHP 文件,但在本地主机上测试时似乎无法访问它。我的同事提到我需要更新暂存服务器中的更改以测试 PHP 文件夹中的更改。

有没有更好的本地测试方法,这样我就不必每次在公共文件夹中添加 PHP 文件进行更改时都更新服务器?

/src/api/co/reg/index.ts

import { TRequestConfig, TRequestParams } from '../..';
export { CoRes } from './CoRes.class';

export const coRequestConfig: TRequestConfig = {
  endpoint: '/tempo/api/co.php',
  method: 'POST',
  useMock: false,
  mockFunc: params => {
    return {
      ok: true,
      body: '{}',
    };
  },
  params2request: (params): TRequestParams => {
    return {
      body: params ? params.body : {},
    };
  },
};

/public/api/co.php

<?php
$ch = curl_init();
$isDev = $_SERVER['SERVER_NAME'] === 'stg.cooo.ca' || $_SERVER['SERVER_NAME'] === 'lol.ca';
$protocol = $isDev ? 'https://cooo.com' : 'https://cooo.prod.com';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $url = "${protocol}/aa/api/co/used";
  $data = file_get_contents('php://input');

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

} else {
  $couponId = $_GET['couponId'];  
  $url = "${protocol}/aa/api/co/${couponId}";

  curl_setopt($ch, CURLOPT_URL, $url);
}
if ($isDev) {
  curl_setopt($ch, CURLOPT_USERPWD, "1234:1122"); 
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo  $result;

php reactjs server wamp public-folders
1个回答
0
投票

我经常在自己的项目中这样做,并且我有一个 hackish 解决方案。

要从服务器端(WAMP/LAMP/XAMPP/ETC)运行 PHP,解析器或编译器需要先处理 PHP 文件,然后将数据发送到客户端。由于 React 是基于节点的,因此它无法原生处理 PHP 文件。

我自己的解决方案使用 WAMP 并将虚拟主机 (httpd-vhosts.conf) 绑定到我的 React 项目的公共文件夹。

例如api.projectname.test到path/to/public/folder.

接下来,我配置主机文件(c:\Windows\System32\Drivers tc\hosts) 将此 URL 重定向回本地主机

最后,我启动 WAMP 并做出反应,在反应中我使用条件 if 在开发或生产之间切换,以切换 URL

if_dev() ? 'http://api.projectname.test/api' : '/api'

稍后会添加一些示例,现在是凌晨 3 点,我在睡觉前在手机上打字。

© www.soinside.com 2019 - 2024. All rights reserved.