0

我正在开发一个用于自学的项目,该项目在后端使用 laravel,并在前端运行 react native。我已经为我的应用程序实现了登录和注册屏幕。现在我正在尝试通过它的 api 路由将它连接到我的 laravel 服务器。我第一次遇到 CORS 问题,所以我通过制作一个新的中间件并编辑 kernel.php 文件来解决它,如该线程中所述。

React 应用程序和 Laravel API 的 CORS 问题

现在我尝试首先使用 get request 运行一些测试,我在 react 中的提交功能是

handleSubmit = async() => {
const email  = this.state.email
const pass = this.state.password

const proxyurl = "https://cors-anywhere.herokuapp.com/";
/*TEST FOR GET REQUEST */
let response = await fetch(`http://mobileprediction/api/user?email=${email}&pass=${pass}`, {
  headers: {
     "Content-Type" : "application/json",
     "Accept" : "application/json"
   },

})


let result = await response.json()
console.log(result)
}

我在 laravel 路由中的 api.php 文件是

Route::get("/user", function (Request $request) {
  return $request;
});

并且它提供了所需的输出,但是当我使用发布请求以相同的方式进行测试时,无论如何我都会得到一个空数组,我无法弄清楚问题出在哪里

我的 react native 应用程序中的 handlesubmit 函数是

handleSubmit = async() => {
const email  = this.state.email
const pass = this.state.password


/*TEST FOR POST REQUEST */
 let response = await fetch(`http://mobileprediction/api/user`, {
   method: "POST",
   header : {
     "Content-Type" : "application/json",
     "Accept" : "application/json"
   },
   body : JSON.stringify({
     emailid : email,
     password : pass
   }),
 })

let result = await response.json()
console.log(result)
}

laravel 中的 api.php 文件是

Route::get("/user", function (Request $request) {
  return $request;
});

Route::post("/user", function(Request $request) {
  return $request;
});
4

2 回答 2

0

所以我的理解是,从反应原生的获取请求中,它不仅仅是发送输入,而是一个页面,其正文具有 json 格式的键值。所以我无法访问服务器中的数据

$request->param 

或与

request("param")

你可以得到json格式的字符串

$request->json()->all()

但我仍然无法达到个人价值观

对我来说,工作是获取所有内容,然后使用

$postInput = file_get_contents('php://input');
   $data = json_decode($postInput, true);
   return ["email" => $data["emailid"] ];
于 2020-02-28T05:03:40.123 回答
0

我认为您将路由写在 中web.php,因为您的 API 可以将端点写在api.php.

尝试VerifyCsrfTokenapp/Http/Kenrel.php. 它有安全问题,但你可以在你的学习步骤中做到这一点。

[ https://laravel.com/docs/6.x/routing ] [在此链接中搜索 CSRF]

任何指向 Web 路由文件中定义的 POST、PUT 或 DELETE 路由的路由都应该包含一个 CSRF 令牌字段。

于 2020-02-23T15:56:31.590 回答