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‑management
GET 요구와 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
'programing' 카테고리의 다른 글
NPM에서 Vuejs 컴포넌트를 만들고 게시하는 방법 (0) | 2022.08.19 |
---|---|
C에서 값 최적화 및 복사 항목 반환 (0) | 2022.08.19 |
Vue.js를 사용하여 대체 버튼을 클릭하여 대체 약품을 사용하고 싶다. (0) | 2022.08.19 |
v-for 항목 내부 전환은 전체 목록에 영향을 미치는데, 각 전환이 포함된 목록 항목에만 영향을 미치도록 하려면 어떻게 해야 합니까? (0) | 2022.08.19 |
x86, win32의 빈 프로그램에 대한 GCC 어셈블리 출력 (0) | 2022.08.19 |