Laravel API 사용법 노트

소개



마지막으로 Laravel의 프레임 워크와 RestAPI에 대해 조금 이야기했습니다.
이번에는, 자신이 처음 사용한 프레임워크의 사용법이 잘못되어 있었기 때문에 그 때의 기사를 써 가고 싶습니다.
이 기사는 어디까지나 자신의 개발에

전회의 기사에, 조금씩한 MVC를 조금 써 있으므로, 만약 괜찮으면 이쪽도 참고해 주세요https://qiita.com/Yami_37/items/49cda10828a23d08dfaa

API 사용법



첫째, 내가 API에서 사용하기 위해 처음 생각했던 잘못된 MVC 인식입니다.
→ MVC이기 때문에 Model, View, Controller, 하나씩 존재합니다.
Controller로 View와 API의 데이터, 모두 return 해 준다
것이라고 생각했습니다. 하지만 컨트롤러는 뷰와 데이터의 값을 기본 반환하지 않습니다.

자신은 APIController, APImodel을 만들지 않고 노란색 Controller에서
return view ( '/hello.blade.php/' ,compact('data'));

그리고 작성하고 view와 데이터를 모두 반환했습니다.

아래의 그림에서 접하고 있습니다만, 이미지로 해서는, 노란 controller에서는 view만을 돌려줍니다.
 →APIController(빨강)로 return하는 것은 어디까지나 「데이터」입니다.



이를 위해 API용 Controller와 Model을 만들어야 합니다.
View에서 APIController의 index를 사용하려는 경우의 흐름으로는
  • routes의 web로 Route::get('URL', 'Controller@index')로 하고, 어디까지나, 단지 「controller(황색)」로 API를 호출합니다.
  • Model (녹색)에서 "file_get_contents"또는 "curl"등을 사용하여 APIController를 실행하십시오.
  • API에서 돌아오는 데이터는 어디까지나 Json 데이터 등으로하고 순수하게 PHP 데이터를 사용하고 싶은 경우도 Model에서 데이터 변환을합니다.

    Model에서 API를 두드릴 때는 다음과 같은 형태로 구현했습니다.
    file_get_contents로 get하는 경우
    public function getApiController(){
          $url = //任意のAPIURL
           $get_api_index = file_get_contents($url);
           // jsondataをPHPのデータに変換
           $get_api_index = json_decode($get_api_index, true);
           $data = $get_api_index["//受け取りたいデータ"];
           return $data;
       }
    

    curl로 put하는 경우는
    public function putApiController(Request $request){
            $url = //任意のAPIURL
            $curl = curl_init($url);
    
            $data = $request->toArray(); //配列にしたい場合
    
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT'); // ※
            curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); // ※
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $response = curl_exec($curl);
            curl_close($curl);
    
            $data = json_decode($response);// 配列からオブジェクトに変換
            return $data;
        }
    

    ※ 여담 $response_code = curl_getinfo( $curl, CURLINFO_HTTP_CODE );오류가 발생했는지 확인할 수 있습니다.
  • 좋은 웹페이지 즐겨찾기