# 20210127(수)

## 2021-01-27

### 1. 학습 날짜

* 2020-01-27

### 2. 학습 시간

* 13:30 \~ 24:30

### 3. 학습 범위 및 주제

* 트렌센던스 API 설계
* postman으로 설계한 api에 맞춰 세팅해두기
* DB 설계

### 4. 학습 목표

* 설계해놓은 API를 기반으로 테스트에 사용할 postman collection 을 작성한다.
* 설계해놓은 API, VIEW 를 기반으로 DB 를 설계한다.

### 5. 학습 정리

* x

### 6. 상세 학습 내용

* postman
  * postman 을 이용해서 동사와 목적어. 즉 http method 와 url 을 명시해서 서버에 보낼 수 있는건 한참전부터 알았다.
  * 하지만 이전까지는 일회용으로서만 했다면, 작성해놓은 request를 반복적으로 사용할 수 있게하기위해 `collcetion` 이라는 묶음으로 묶어서 만들어 저장했다.
  * 이제는 만들어놓은 리스트를 단순히 눌러서 실행하면 된다.
  * 다만 아직까지는 자동화를 시키지 못했다. 조금 더 알아보자
* DB
  * 오늘까지 설계한 api 와 view를 기반으로 DB를 설계했다.
  * 솔직히 DB 설계할 때는 많은 부분 팀원들이 했고 나는 거의 한게 없다...
  * 특히 헷갈리는건 중간테이블의 개념 공부해두자
  * 그리고 DB설계 협업 툴 사용법도 익혔다.&#x20;
* Channel 설계
  * 채널은 많이 만들지 않기로 했다.
  * 정말 뷰의 모든 부분을 실시간 변화가 가능하게 만들수는 있지만 이렇게 될 경우, 유저에게 혼란만 가중시킬거 같다는 판단하에 정말로 필요한 몇 가지 채널만 사용하기로 했다.
* 라우팅 설정
  * namespace의 활용
    * 우리는 api를 사용할 때 `/api/users/login` 와 같이 사용한다. 즉 항상 `api` 가 앞에 붙는다. 이럴 경우 `namespace` 를 사용하면 간편하게 할 수 있다.
    * 라우트 파일에는 `namespace` 를 사용한다고 선언하고 컨트롤러를 생성할 때는 `rails g controller Api::Users` 와 같이 만들면 된다.
* `Can't verify CSRF token authenticity.` 에러
  * 이 에러는 포스트맨으로 `post` 요청을 보냈을 때 발생했다.
  * 발생한 이유는 뭐 보안 뭐시기이긴 한데, 일단 간단한 해결법은 `application_controller.rb` 에 `protect_from_forgery with: :null_session` 을 입력하는 것
* `member` 와 `collection` 의 활용법
  * 라우팅을 2단으로 할 때 사용하면 된다.
  * `member`와 `collection`의 차이점은 그냥 직접 해보면 바로 안다.

### 7. 오늘 학습 내용에 대한 개인적인 총평

* 힘들어 죽겠다.. 아직 학습이 너무 부족하다. 아니면 내가 멍청한건가?

### 8. 다음 학습 계획

* 라우팅, 채널 설정


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://simian114.gitbook.io/blog/undefined-1/diary/2021/january/20210127.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
