2015-01-18 3 views
7

네비게이션 메뉴 항목 목록을 보려면 REST API를 사용하고 있습니다. 이 시점까지 API의 모든 항목은 매우 단순했습니다. 단 하나의 항목을 기존 /collection/{id} 항목으로 수정해야하기 때문입니다.REST API를 통해 여러 항목의 순서를 업데이트하는 방법은 무엇입니까?

하지만 지금 나는 order 필드 내 데이터베이스의에 저장되어있는 목록 항목의 순서를 변경하려면는 물론 의 나는 각 메뉴 항목에 대한 하나 개의 요청을하고 싶지 않습니다.

그렇다면 적절한 방법/공통점은 무엇입니까? 가장 좋은 방법은 무엇입니까?

나는 이것을 허용하지 않습니다 (필자는 API를 구축하는 데 사용) 전송 된 데이터 만 Laravel의 ID 차 키 - 값 쌍으로 /collectionPUT 요청을 보내는 상상할 수 있었다. 나는 그 제한에 대해 확실히 놀 수 있지만 이것이 허용되지 않는 합리적인 이유가 있다고 생각합니다.

또 다른 아이디어는 ID의 쉼표로 구분 된 목록으로 /collection/{ids}PUT 요청을 전송하는 것입니다하지만 내가 또한 꽤 중복으로 인한 것으로 보인다 상기 ID의 키 - 값 목록과 순서 값을 보낼 것이다 그것도 약간 더러운.

그럼 실제로 가장 좋은 방법은 무엇입니까?

+1

레코드의 부분 필드를 업데이트하고 요청 배열을 보내면 laravel에서 반복하여 레코드를 업데이트하십시오. – Rafael

+0

패치가 실제로 유용하게 들리지만, 나는 그 방법을 감독 한 것 같습니다. 하지만 여전히 내 문제를 해결하지 못합니다. "요청의 배열"이란 무엇을 의미합니까? – Loilo

+0

양식 또는 AJAX 요소를 사용하고 있습니까? – Rafael

답변

1

/collection/reorder와 같은 경로를 사용하여 새 경로를 정의하는 것이 좋습니다.

이렇게하면 POST 메소드를 사용하여 새 위치로 요소 목록을 보낼 수 있습니다. 내용은 같은 모양을 :

{ 
    "element1": 4, 
    "element2": 1, 
    (...) 
} 

가 "에서 element1"는 요소와 해당 값, 새로운 질서의 식별자입니다.

당신은이 방법에 보내야 할 데이터의 형식은 당신이 (놓은 뒤 드롭, 예를 들어) 목록 순서를 UI에 사용하는 도구에 의존 할 수 있다는 것을 알 수 있습니다.

희망이 있습니다. Thierry

+0

실제로 유용하게 들립니다. 모델이나 컬렉션이 아닌 새로운 경로를 정의하는 것이 적절한 지 확신 할 수 없었습니다. 감사! – Loilo

+0

나는 흔히 resource/collection/메소드 POST를 사용하여 콜렉션에 요소를 추가한다. 아마도이 링크는 당신을 도울 수 있습니다 : https://templth.wordpress.com/2014/12/15/designing-a-web-api/. –

관련 문제