programing

Laravel 리소스 경로를 Axios에서 삭제

bestcode 2022. 8. 19. 20:51
반응형

Laravel 리소스 경로를 Axios에서 삭제

리소스 경로를 사용하여 레코드를 삭제하도록 액시오스를 설정합니다.

axios.delete('/job-management', this.deletedata).then((res)=>{
    console.log(res);
})

내 경로에는 다음이 있습니다.

Route::resource('job-management', "PositionsController", [ 'as' => 'jobs']);

자, 이제 제 안에PositionsController다음과 같은 것이 있습니다.

public function destroy(Positions $positions) {
    return $positions;
}

그러나 위의 경우 항상 "method not allowed"가 반환됩니다.공리를 사용하여 삭제 요청을 처리하려면 어떻게 해야 합니까?delete()방법?

라라벨이 던지다MethodNotAllowedHttpException루트가 지원하지 않는HTTP 동사를 사용하여 루트에 요구를 송신하려고 할 때.이 질문의 경우 JavaScript 코드가 DELETE 요청을 다음 경로의 URL로 전송하기 때문에 이 오류가 나타납니다./job‑managementGET 요구와 POST 요구만 지원하는 루트에 의해 처리됩니다.Laravel이 자원 풀 컨트롤러에 기대하는 일반적인 형식으로 URL을 변경해야 합니다.

이 오류는 잘못된 URL로 요청을 전송하고 있다는 사실을 숨기고 있기 때문에 혼란스럽습니다.그 이유를 이해하려면 , 다음에 의해서 작성된 루트를 참조해 주세요.Route::resource()(매뉴얼 참조):

Verb        URI                             Action  Route Name
GET         /job-management                 index   job-management.index
GET         /job-management/create          create  job-management.create
POST        /job-management                 store   job-management.store
GET         /job-management/{position}      show    job-management.show
GET         /job-management/{position}/edit edit    job-management.edit
PUT/PATCH   /job-management/{position}      update  job-management.update
DELETE      /job-management/{position}      destroy job-management.destroy

위와 같이 패스 컴포넌트가 있는 URL은/job-management컨트롤러에 전달됩니다.index()그리고.store()DELETE 요청을 처리하지 않는 메서드입니다.이것이 우리가 예외를 보는 이유입니다.

질문에 나타난 바와 같이 DELETE 요청을 수행하려면 다음과 같은 경로를 가진 URL로 요청을 전송해야 합니다./job-management/{position},어디에{position}삭제할 위치 모델의 ID입니다.JavaScript 코드는 다음과 같습니다.

axios.delete('/job-management/5', this.deletedata).then((res) => { ... })

컨셉을 명확하게 설명하기 위해 위치 ID를 URL에 하드코드했습니다.단, 이 ID에는 변수를 사용하는 것이 좋습니다.

let positionId = // get the position ID somehow
axios.delete(`/job-management/${positionId}`, this.deletedata).then((res) => { ... })

이 형식의 URL을 통해 Larabel은 DELETE 요구를 컨트롤러에 라우팅할 수 있습니다.destroy()방법.위의 예에서는 ES6 템플릿 문자열 리터럴을 사용하고 있습니다.질문의 코드는 이 기능을 지원하는 JavaScript 버전을 사용하고 있음을 나타내고 있기 때문입니다.백틱의 배치에 주의해 주세요(`)을 클릭합니다.

위의 당신의 코드에서 볼 수 있듯이, 당신은 합격합니다.Positions매개 변수로서 웅변적인destroy방법, 단,vueJS이 대상을 통과할 수 없습니다.그 때문에, 다음과 같이 건네줍니다.

axios.delete('/job-management/${id}').then((res)=>{
    console.log(res);
})

그리고 url 내의 id param은 데이터나 사고의 대상이 될 수 있습니다.

이것이 너에게 도움이 되길 바란다.

언급URL : https://stackoverflow.com/questions/47346709/laravel-resource-route-delete-from-axios

반응형