laravel 5.8 — запрос api для тестирования postman стал пустым

#php #laravel

#php #laravel

Вопрос:

Я следую этому руководству и использую postman для тестирования api . Все работает, как ожидалось в localhost . но когда я загружаю на рабочий сервер, каким-то образом данные api запроса отфильтровываются.

Я следую инструкции по установке passport и всем этим настройкам в различных файлах. затем я php artisan migrate на рабочем сервере, после этого php artisan passport:install , затем сообщение было успешным:

 Encryption keys generated successfully.
Personal access client created successfully.
Client ID: 1
Client secret: <some long strings>
Password grant client created successfully.
Client ID: 2
Client secret: <some long strings>
  

У меня есть тестовая функция:

 ResidentsController.php:

public function testing(Request $request){
        return $request->all();
    // return ['test'=>'success'];
    }
  

и маршрут:

 api.php:
Route::post('/resident/test','ResidentsController@testing');
  

Итак, я использую postman для вызова:

 POST : http://examplehost/api/resident/test/
  

данными:

 {"name":"user001"}
  

и заголовок:

 Content-Type: application/json //<-- which enough for localhost
  

но данные возвращаются:

 [] ///<--- I am expecting {"name":"user001"}
  

и я тестирую с заголовком:

 [
Content-Type: application/json,
Authorization: {{'bearer'.$accessToken}} ///<-- which the direction from tutorial
]
  

все еще возвращает то же самое:

 []
  

Я не уверен, какую часть я пропустил. Как я могу это решить?

Ответ №1:

В Postman щелкните по телу, выберите raw и выберите JSON (application / json) из выпадающего списка

В теле вставьте свой JSON

  {"name":"user001"} 
  

В вашем методе тестирования

 if ( $request->isJson() ) {
    $json = json_decode(trim($request->getContent()),true);
    return response()->json($json);
}