这是我的服务器端代码:(我使用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;
}
这是三种请求:
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'));
返回
[]
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"}
好了,如您所见,在邮递员(请求模拟器)中,当您在body
部分中传递参数时,它可以工作(而不是作为url中的查询字符串) )。但是为什么它在代码中不起作用? (您可以在浏览器的console
棕褐色中尝试一下)。知道如何使#1
正常工作吗?
编辑:注意邮递员的标题不同:
答案 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。