앞글에서도 말했지만, jetstream의 기능을 추가 하는데에 시간을 너무 많이 날렸다.
일단 web.php에서 라우팅을 설정하자.
my_apis을 get으로 접근하는 라우트를 만들었다.
밑의 post 접근은 나중에 설명하겠다.
[MyAPIController::class, 'index'] 는 "MyAPIController라는 클래스에 접근하여 index 펑션을 실행시켜라" 라는 뜻이다.
그 밑 store는 따로 설명하지 않겠다.
그리고 다음과같이, resources/views디렉토리에 my_apis라는 폴더를 만들고 그에 따른 index.blade 파일을 만든다.
app.blade.php은 공통 레이아웃을 위해 복사 붙여넣기로 넣었다.
index.blade 파일의 내부 코드다.
@csrf는 laravel의 공식 문서를 참고하기 바란다.
일단은 총 4가지 구성이 있어야할것이다.
1. 거래소 선택
2. api key 입력
3. secret key 입력
4. 제출 및 저장 및 수정 -> 데이터베이스 저장까지
이 기능들을 위한 view를 만든 것이다.
v--------------------------------------------------------------------------------------------
view만으로 작동이 될 순없다.
컨트롤러와 모델이 필요하기 때문이다.
아까 선언했던, MyAPIController를 만들어보자.
기능 대부분을 담은 컨트롤러이기 때문에, 굉장히 중요하다.
일단, 현재 사용자의 email을 가져와서, 해당 사용자의 email에 맞는 행에 있는 api 열에 데이터를 주입해야 하는 로직이 필요했다.
post로 선언받아 데이터를 넣는 store 함수를 살펴보자.
public function store(Request $request) {
$user = Auth::user(); --------------------------- 1
User::updateOrCreate( --------------------------2
['email' => $user->email], --------------3
['using_exchange' => $request->input('exchange'), 'api_key' => $request->input('api_key'), 'secret_key' => $request->input('secret_key')] ---------------4
);
return redirect('/dashboard'); -------------------------5
}
2번라인 :
use App\Models\User; 모델과 연관된다. 이 모델은 나중에 천천히 살펴보겠다.(회원가입에 필요한 모델이다)
이 모델 사용선언을 하지 않으면, user 데이터에 접근할 수 없다.
updateOrCreate는 테이블내에 맞는 열의 데이터를 찾고, 원하는 열의 데이터를 update한다. or 찾는 열의 데이터가 없으면 새롭게 create 한다.
하지만 새롭게 create를 한다면, user테이블이 회원가입없이 뒤죽박죽이 될 수 있기 때문에, 현재 사용자의 이메일 컨펌을하여 원하는 라인에만 새로 api들을 업데이트하는 것이 굉장히 중요하다.
아래는 그 기능을 보겠다.
1번 라인 :
use Illuminate\Support\Facades\Auth;을 통해 이뤄진다. 현재 사용자의 정보를 가져와 변수 $user에 저장한다.
3번 라인 :
$user 변수에 저장한 정보 중에 email 열을 찾아 반환한다. 또한, 데이터 칼럼에서 해당하는 열에서 email을 비교하게된다.
4번 라인 :
비교가 끝났으면(일치하는 열을 찾을 수 밖에없다. 회원가입을 해야 볼수 있는 페이지기 때문) view서 post형식으로 받아온 데이터를 해당 열에 주입을 한다.
5번 라인 :
모든게 끝났으면 데쉬보드 페이지로 리다이렉트한다.
--------------------------------------------------------------------------------
이렇게 컨트롤러 부분이 끝났으면, user 모델을 살펴보자.
사실, 추가된 부분은 하이라이트 된 부분 뿐이다.
fillable과 hidden은 라라벨 공식문서를 참고하기 바란다.
test를 해보면
사진과 같이 해당 로그인된 user의 행의 맞는 열의 데이터가 제대로 입력된것을 확인할 수 있다.
다음엔 dashboard part를 만들어보자.
---------------------------------------------------------------------------------------------
*참고
데이터를 만질 때 애를 먹었다.
xampp에서 mysql my.ini에서 mysql_mode를 아무리 수정해도 strict모드가 풀리지 않아 계속 데이터를 넣을 수 가 없었기 때문이다.
이유는 알고보니 laravel은 자동으로 strict모드가 설정되어있다, 아무리 my.ini에서 고쳐도 라라벨 내에서 고치지 않으면 소용없다.
위치는 vendor/laravel/framework/src/MySqlConnector.php이다.
주석 윗부분처럼 수정한다면 데이터에 굳이 값이 들어가지 않아도 데이터를 형성할 수 있는 non-strict모드로 된다.
'Dev' 카테고리의 다른 글
바이낸스 api를 이용한 선물 Ranking system 개발기 - 5 (개인 Dashboard 파트 개발기) (0) | 2020.10.12 |
---|---|
바이낸스 api를 이용한 선물 Ranking system 개발기 - 4 (기초적인 틀 짜기) (0) | 2020.09.30 |
바이낸스 api를 이용한 선물 Ranking system 개발기 - 3 (로그인/회원가입) (0) | 2020.09.30 |
바이낸스 api를 이용한 선물 Ranking system 개발기 - 2 (기본적인 라우팅) (0) | 2020.09.30 |
바이낸스 api를 이용한 선물 Ranking system 개발기 - 1(세팅) (0) | 2020.09.30 |
댓글