在向 Laravel Api 发出 POST 请求时,React Native 获取一个空数组
React Native fetch getting an Empty array when making POST request to Laravel Api
我正在做一个自学项目,后端有 laravel,前端有 运行ning React Native。我已经为我的应用程序实现了登录和注册屏幕。现在我试图通过它的 api 路由将它连接到我的 laravel 服务器。我第一次遇到 CORS 问题,所以我通过制作一个新的中间件并按照此线程中所述编辑 kernel.php 文件来解决它。
CORS Issue with React app and Laravel API
现在我尝试 运行 一些测试,首先使用 get 请求,我在 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;
});
并且它给出了所需的输出,但是当我用相同的方式测试 post 请求时,无论如何我得到一个空数组,我无法弄清楚问题是什么
我的 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;
});
我想你在 web.php
中写你的路线,因为你的 API 可以在 api.php
中写端点。
尝试在 app/Http/Kenrel.php
中评论 VerifyCsrfToken
中间件。
它有安全问题,但你可以在你的学习步骤中完成。
[ https://laravel.com/docs/6.x/routing ] [在此搜索CSRF link]
Any routes pointing to POST, PUT, or DELETE routes that are defined in the web routes file should include a CSRF token field.
所以我的理解是,从 React Native 中的获取请求来看,它不只是发送输入,而是发送一个页面,其正文具有 json 格式的键值。所以我无法访问服务器中的数据
$request->param
或与
request("param")
你可以用
得到 json 格式的字符串
$request->json()->all()
但我仍然无法获得各个值
对我来说,有效的方法是获取所有内容,然后使用
访问这些值
$postInput = file_get_contents('php://input');
$data = json_decode($postInput, true);
return ["email" => $data["emailid"] ];
我正在做一个自学项目,后端有 laravel,前端有 运行ning React Native。我已经为我的应用程序实现了登录和注册屏幕。现在我试图通过它的 api 路由将它连接到我的 laravel 服务器。我第一次遇到 CORS 问题,所以我通过制作一个新的中间件并按照此线程中所述编辑 kernel.php 文件来解决它。
CORS Issue with React app and Laravel API
现在我尝试 运行 一些测试,首先使用 get 请求,我在 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;
});
并且它给出了所需的输出,但是当我用相同的方式测试 post 请求时,无论如何我得到一个空数组,我无法弄清楚问题是什么
我的 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;
});
我想你在 web.php
中写你的路线,因为你的 API 可以在 api.php
中写端点。
尝试在 app/Http/Kenrel.php
中评论 VerifyCsrfToken
中间件。
它有安全问题,但你可以在你的学习步骤中完成。
[ https://laravel.com/docs/6.x/routing ] [在此搜索CSRF link]
Any routes pointing to POST, PUT, or DELETE routes that are defined in the web routes file should include a CSRF token field.
所以我的理解是,从 React Native 中的获取请求来看,它不只是发送输入,而是发送一个页面,其正文具有 json 格式的键值。所以我无法访问服务器中的数据
$request->param
或与
request("param")
你可以用
得到 json 格式的字符串$request->json()->all()
但我仍然无法获得各个值
对我来说,有效的方法是获取所有内容,然后使用
访问这些值$postInput = file_get_contents('php://input');
$data = json_decode($postInput, true);
return ["email" => $data["emailid"] ];