목록Framework (49)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/BAJmv/btrLLWdQSaz/tJBPaxCStQkaiclfPY08mK/img.png)
Swagger란 https://swagger.io/ API Documentation & Design Tools for Teams | Swagger swagger.io Swagger는 웹 서비스 명세를 문서화 해주는 오픈 소스 소프트웨어 프레임워크이다. 즉, 웹 서비스가 어떤 로직을 수행하고, 이 로직을 수행하기 위해서는 어떤 값을 요청하며, 이에 따른 응답값은 무엇인지 정리해서 문서화해주는 프로젝트이다. 보통 웹 애플리케이션을 개발할 때 프론트 팀과 백엔드 팀으로 나누어서 개발을 하는데, 이 때 백엔드 팀이 만든 서비스를 swagger로 문서화해서 프론트 팀으로 넘겨 로직의 이해도를 높이고, 소통한다.swagger을 사용하면 개발과정 속에서 계속 변경되는 명세 문서를 알아서 주기적으로 업데이트해주기 때문..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l65pC/btrLAqSKinS/M7dYkxiPiRFVwBTsGpMUl1/img.png)
Logback https://logback.qos.ch/ Logback Home Logback Project Logback is intended as a successor to the popular log4j project, picking up where log4j 1.x leaves off. Logback's architecture is quite generic so as to apply under different circumstances. At present time, logback is divided into three mod logback.qos.ch 로깅(logging)이란 애플리케이션이 동작하는 중에 시스템의 상태나 동작 정보를 서버측에 시간순으로 기록하는 것이다. 애플리케이션을 개발할 때(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2eB0y/btrDkvJkuV2/o0xqNDofhEqTNNIM9tq2nk/img.png)
라라벨은 내장된 도구 세트가 있기 때문에 websocket을 사용하기 매우 쉽다. 생성된 이벤트를 웹소켓 서버로 브로드캐스트 해야한다. 브로드캐스팅(broadcasting)은 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식이다. pusher 세팅 브로드캐스트를 이용하려면 composer package인 pusher을 가져와야 한다. 터미널을 켜고 프로젝트 파일 경로 안에서 아래의 명령어를 친다. composer require pusher/pusher-php-server pusher가 잘 깔렸는지 확인하려면 /composer.lock 폴더로 가서 'pusher'을 검색해본다. 그럼 이렇게 pusher가 잘 깔린 것을 확인할 수 있다. 그 다음 pusher.com으로 가서 로그인..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVzlsF/btrwsJF2a7D/axZxV7CMSQ5p1d67wgh11K/img.png)
개발을 하다가 conroller 부분에 계속 중복되는 코드가 생겨서 어떻게 처리해야될까 고민했었다. 그래서 아예 클래스를 새로 만들어서 중복되는 코드를 함수화 시켜서 넣고, 그 클래스를 상속받아 안에있는 함수를 꺼내서 쓰기로 했다. 라라벨에서 만든 컨트롤러는 'Contorller'라는 이름을 가진 컨트롤러를 상속한다. 그래서 이 컨트롤러(Conroller) 안에다 함수를 집어넣고 새로 만든 컨트롤러로 가서 함수를 사용하면된다. 예시를 통한 사용 방법 1. Controller에다 함수를 집어넣는다. class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; public function ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bj5mjO/btrvUBornl2/qA3WXBx59pkDYoOkOMGlH1/img.png)
라라벨로 개발하면서 편리했던 기능 중 하나가 페이지네이션이다. 라라벨은 페이지네이션 기능을 사용하기 아주 쉽게 미리 만들어놨다. 짧게는 코드 2줄 만으로도 페이지네이션을 구현할 수 있다. 사용 방법 기본적으로 라라벨의 paginator에서 생성된 HTML은 Tailwind CSS 프레임워크와 호환된다. 그러나 부트스트랩 페이지네이션 지원되기 때문에 부트스트랩을 이용한 페이지네이션을 만들었다. 1. 페이지를 매길 쿼리 마지막에다가 ->get() 대신 '->paginate(페이지 표시하려는 항목 수)'를 쓴다. DB::table('goods') ->orderby('id', 'asc') ->paginate(3); 2. 부트스트랩과 호환하기 위해 App \ Providers \ AppServiceProvider..
데이터베이스의 테이블은 테이블끼리 서로 관련되어 있다. 예를 들어 일대일, 일대다, 다대다 관계등이 있다. 모델관의 관계를 사용한다면 코드를 좀 더 간결하고 알아보기 쉽게 짤 수 있다. 일대일 User 모델 public function phone() { return $this->hasOne('App\Models\Phone'); } controller $books = App\Models\User::find(1)->phone; id가 1인 user의 phone을 구하기 일대다 User 모델 public function books() { return $this->hasMany('App\Model\Book'); // Book모델(books 테이블)과 일대다 관계 } controller //$books = Boo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsWGpn/btrrdl6oA9j/2szHnvtPGtlzupvm65UUhK/img.png)
Form validation form validation은 안전을 위해 프론트쪽에서 한 번 거르고, 서버 측에서 한 번 더 거르는게 좋다. 왜냐하면 먼저 프론트에서 bootstrap 같은 라이브러리를 이용해 내용의 유효성을 검사해도, 사용자가 개발자 모드를 켜서 input text에 있는 required를 지우면 프론트에서의 유효성 검사는 뚫리게 되기 때문이다. 1. bootstrap을 이용해 유효성 검사를 한다. 2. 서버 측에서 하는 유효성 검사를 한다. 라라벨에서는 유효성 검사하는 기능을 제공한다. controller의 유효성 검사할 함수 public function store(Request $request) { // 유효성 검사 request()->validate([ 'title'=>'requir..
패키지 다운로드 프로젝트 파일에서 npm install을 하면 package.json의 devDependencies에 있는 패키지들을 설치 할 수 있다. webpack.mix.js에서 코드를 작성하면 css파일이나 js파일을 컴파일하여 사용할 수 있다. webpack.mix.js에 적혀있는 css or js 컴파일 하는 코드 npm run dev resource 폴더 안에 있는 css파일 js 파일이 컴파일 되면 public 폴더 밑에 새로 파일이 생긴다. 파일 명명 규칙 controller : 맨 앞 문자 대문자로, 단수형 ex) BookController model : 맨 앞 문자 대문자로, 단수형 ex) Book table : 복수형 ex) books migration : 날짜(자동으로 정해줌)_c..