为什么我无法在正文部分获取传递的参数?

时间:2018-08-13 07:28:20

标签: javascript php

这是我的服务器端代码:(我使用Laravel框架)

// route
Route::post('get_login_api_token', 'Auth\LoginController@get_login_api_token')->middleware('cors');

public function get_login_api_token(Request $request){
    return $request;
}

这是三种请求:

#1:

fetch('https://back.pronexo.net/get_login_api_token', {
          method: 'POST', // or 'PUT'
          mode: 'no-cors',
          body: JSON.stringify({cell_phone:'whatever', password:'whatever'}),
          headers:{
            'Content-Type': 'application/json',
          },
        }).then(res => console.log('OK'));
  

返回[]


#2:

fetch('https://back.pronexo.net/get_login_api_token?cell_phone=whatever&password=whatever', {
          method: 'POST', // or 'PUT'
          mode: 'no-cors',
          headers:{
            'Content-Type': 'application/json',
          },
        }).then(res => console.log('OK'));
  

返回{"cell_phone":"whatever","password":"whatever"}


#3:

enter image description here


好了,如您所见,在邮递员(请求模拟器)中,当您在body部分中传递参数时,它可以工作(而不是作为url中的查询字符串) )。但是为什么它在代码中不起作用? (您可以在浏览器的console棕褐色中尝试一下)。知道如何使#1正常工作吗?


编辑:注意邮递员的标题不同:

enter image description here

2 个答案:

答案 0 :(得分:0)

我没有将header用作application / json,也没有使用json格式编码正文。

我用过curl,并且在json中得到响应,当解码时它给出

stdClass对象([cell_phone] =>无论[pass] =>任何)

答案 1 :(得分:0)

您确定POST记录格式正确吗?

我认为您应该使用FormData API(doc)进行测试。

var data = new FormData
data.append("cellphone", "whatever")
data.append("password", "whatever")

// using XMLHttpRequest
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://back.pronexo.net/get_login_api_token')
xhr.setRequestHeader('Content-Type', 'application/json')
xhr.onreadystatechange = function() {
   if (xhr.readystate = 4 && xhr.status == 200) {
       console.log(xhr.response, xhr.responseText)
   }
}
xhr.send(data)

// using fetch method I don't know how it deals with FormData Objects.
fetch('https://back.pronexo.net/get_login_api_token', {
      method: 'POST', // or 'PUT'
      mode: 'no-cors',
      body: data,
      headers:{
        'Content-Type': 'application/json',
      },
}).then(res => console.log('OK'));

您也许可以使用如下外部工具:Insomnia REST Client测试您的API。