관계형 MySQL DB를 사용하는 프로젝트에서 작업하고 있습니다. 내 테이블은 다음과 같습니다REST API URL 및 라우터와 컨트롤러 간의 배포
- 사용자
- 위치 노드/Express를 사용
- 작물
단순화 된 코드 구조 :
/routers
/routers/User.js
/routers/Location.js
/routers/Crop.js
/controlers
/controlers/UserController.js
/controlers/LocationController.js
/controlers/CropController.js
/models
/models/UserModel.js
/models/LocationModel.js
/models/CropModel.js
app.js
의 관계는 해당 사용자가 할 수있다 많은 위치를 가지고있다. ms) 및 위치에 심은 많은 작물이있을 수 있습니다.
DB 관계가 완료되었습니다. 문제 없습니다. 내 질문은 논리적으로 내 코드를 구조화하는 방법과 동시에 REST 원칙을 적용하는 것입니다!
끝점 URL에 대한 API 관점에서 궁금합니다. 현재
그들은 :
호스트 이름/API/사용자/: ID - 사용자 계정
호스트 이름/API/사용자/: ID/위치 - 사용자 위치
호스트 이름/api/user/: id/locations/: locationid - 특정 사용자의 특정 위치 정보
호스트 이름/API/사용자/: ID/위치/: locationid/작물 - 목록 특정 사용자
에 속하는 특정 위치에 심어 져 모든 작물이 URL 구조는 나머지 관점에서 OK인가?
호스트 이름/API/사용자/: ID/위치
요청 후는 라우터와 컨트롤러 내 경로, 전 대한 책임을 져야 내가 arround를 내 머리 포장 은어 API ...에서 수신/: 위치 식별자
사용자 라우터와 컨트롤러에서이 URL을 처리해야합니까? 또는 위치 라우터 및 컨트롤러에서?
URL에 분명히 : "사용자와 함께 : id, 내 위치를 찾으십시오 : 그에게 속한 locationid.".
/user
/user/:id
/user/:id/locations
...
...
/user/:id/crops
/user/:id/crops/:cropid
...
그리고 :
이UserRouter.get(/:id/locations/:locationid, function(....){
UserController.getUserLocationById(:id, :locationid);
})
app.use('/user', UserRouter)
는하지만이 방법은, 내가 것 엔까지 모든 가능한 URL을 포함하는 사용자의 라우터 생각 : 그래서, 나 같은 미경 개발자는 자동으로이 경로는 사용자의 라우터 내부해야한다고 가정 다른 라우터 및 컨트롤러에는 없습니다. 그리고이 사실은 내가 REST API 코드 구조에 대해 잘못 생각하고 있다고 생각하게 만듭니다.
현재/user ....로 시작하는 모든 경로는 User Express 라우터에서 처리 한 다음 위 예의 url에서 UserController.getUserLocationById로 전달됩니다.
하지만 내가 실수로 생각합니다.
누군가 내 머리가 뛰는 것을 이해했다면 해결할 수 있습니까?
안부