api-rule.mdc 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ---
  2. alwaysApply: true
  3. ---
  4. - api 서버는 코드이그나이터4 베이스의 벡엔드 기술로 구현되어있으며
  5. 기존 문서에사용되는 양식을 지키며 구현
  6. - 프론트에서 api신규 생성시 백엔드 코드이그나4 기반의 기술로 구현하는 예제를 함께 제공
  7. - 항상 페이지 구성이 완료되고 나면 제작에 필요한 쿼리를 DDL형태로 구성해서 ddl폴더에 만들어줘
  8. - api구성후 백엔드 예제를 backend-examples에 코드이그나이터4 형태로 구성해줘
  9. - MD파일을 생성해서 백엔드 구성과 DB생성을 하는 과정을 순서대로 작성해줘
  10. - 프론트화면 및 UI / API 구성시에는 항상 composition api 형태로 작성 css는 항상 scss형태로 분리해서 구성
  11. ## 프론트엔드 API 호출 규칙
  12. - **Nuxt.js server/api 사용 금지**: 프론트엔드에서 직접 백엔드 API 호출
  13. - **useAxios() 패턴 강제**: 기존 코드베이스와 일관성 유지
  14. - 반드시 다음 형태로 구성:
  15. ```javascript
  16. const loadData = async () => {
  17. try {
  18. const params = {
  19. // 파라미터들...
  20. }
  21. useAxios()
  22. .post('/api/endpoint', params)
  23. .then((res) => {
  24. if (res.data.success) {
  25. // 성공 처리
  26. data.value = res.data.data
  27. } else {
  28. // 실패 처리
  29. error.value = res.data.message
  30. }
  31. })
  32. .catch((err) => {
  33. // 에러 처리
  34. error.value = err.message
  35. })
  36. .finally(() => {
  37. // 완료 처리
  38. loading.value = false
  39. })
  40. } catch (err) {
  41. error.value = err.message
  42. }
  43. }
  44. ```
  45. ## API 구조 금지사항
  46. - **server/api 디렉토리 생성 금지**: Nuxt.js 서버 API 사용하지 않음
  47. - **mysql2, 데이터베이스 라이브러리 사용 금지**: 프론트엔드에서 직접 DB 연결 금지
  48. - **$fetch 사용 금지**: useAxios() 패턴만 사용
  49. - **async/await 패턴 지양**: .then().catch().finally() 체인 사용
  50. ## 백엔드 연동 방식
  51. - 프론트엔드 → CodeIgniter4 백엔드 직접 호출
  52. - useAxios()를 통한 HTTP 통신만 사용
  53. - 응답 형태: `res.data.success`, `res.data.data`, `res.data.message`
  54. - 백엔드는 직접 만들거야 다만 너가 backend-examples 폴더에 프론트와 수신할수는있는 형태의 api예제를 만들어