단일 행의 응용 프로그램 설정
장면은 다음과 같다. 외부 API에서 데이터를 가져와 계기판에 다양한 방식으로 표시하는 상당히 간단한 웹 응용 프로그램을 구축하고 있다.이러한 특정 데이터 검색을 가능하게 하는 과정의 관건은api 키의 존재입니다.이 키는 API를 잠금 해제하고, 내 프로그램의 모든 매력적인 재미를 제공합니다.
이 데이터에 실제로 액세스하는 것 외에, 나의 또 다른 요구는 언제든지 쉽게 API 키를 변경할 수 있고, 응용 프로그램의 코드 라이브러리에 깊이 들어가지 않아도 된다는 것이다.어떻게 해야 합니까?
나는 지금 Ruby on Rails를 사용하고 있지만, 이것은 상당히 중요하지 않다는 것이 증명될 것이다.물론 다음과 같이 애플리케이션 전반적인 구성(예: API 키)을 Rails에 간편하고 안전하게 저장할 수 있는 방법이 있습니다.
# config/environments/production.rb
config.mailchimp_api_key = “ABCDEF”
또는 암호화된 Rails 기밀을 사용하여 config/secrets.yml
파일에 유사한api 키 내용을 저장하고 다음과 같이 액세스할 수 있습니다.Rails.application.credentials.dig(:facebook, :api_key)
이 두 가지 해결 방안의 문제는 모두 동적이지 않다는 것이다. 키를 업데이트하려면 코드 라이브러리에 수동으로 들어가서 변경, 테스트를 하고 프로그램을 재배치해야 한다.이것은 단지 작은 놀이일 뿐이다. 나는 응용 프로그램 코드 라이브러리에 접근하고 이해할 수 있는 사람들에 대한 의존을 없애고 싶다.그래서 나는 키를 데이터베이스 테이블에 저장하기로 결정했다. 이것은 정말 창의적인 것이다.이 간단한 해결 방안이 왜 매우 효과적인지, 그리고 당신이 그것을 어떻게 실시할 수 있는지 깊이 있게 이해합시다.
SRT(Single List)를 선택했습니다.이것은 상대적으로 자명하다. 이것은 단지 한 줄만 있는 책상이다.내 예에서, 이 테이블은
app_settings
라고 불리는데, 이 테이블의 열은 나의 가장 중요한 API 키를 포함한 다양한 응용 프로그램 범위의 설정을 저장한다.나는 지금 다른 모든 표를 처리하는 것처럼 일반적인 읽기/쓰기 작업을 수행할 수 있다.그러나 이 차이점은 표 자체가 한 줄(또는 기록)밖에 없다는 데 있다.이 가능하다, ~할 수 있다,...신분증
암호화api 키
암호화api 키 iv
...
1
asD2-f21Fa-126d-a
$bRs23Gjg82dsGDsF
...
Rails에서 이러한 이점을 실현하는 것은 매우 간단합니다. 다른 웹 프레임워크에서는 그 어떠한 복잡함도 알 수 없습니다.
AppSetting
라는 모델(상응하는 이전을 통해 app_settings
표를 만들고)과 API 키의 암호화 속성/열을 만들었습니다.AppSetting
모델에 추가했고 이 모델은 Active Record's handy 'first_or_create' method:def self.current
first_or_create
end
current
유형의 방법을 결합시켰습니다. 예를 들어Services::Api::Request.call(api_key: AppSetting.current.api_key)
.중요한 것은, 나는 현재 응용 프로그램의 사용자 인터페이스를 통해 낡은 폼을 사용하여api 키를 쉽게 업데이트할 수 있는 방법이 있다.EAV의 작업 원리는 매우 간단합니다. 이것은 모든 설정 값에 한 줄을 정의합니다. 한 열은 설정 이름을 나타내고, 한 열은 설정 값을 나타낼 수 있습니다.내 요구사항에 따라 테이블은 다음과 같습니다.
구성 옵션
가치 01 명
암호화api 키
asD2-f21Fa-126d-a
암호화api 키 iv
H4FHSDFFASQ2
EAV의 매력은 명백합니다. 모든 설정 옵션은 익숙한 키 값 쌍과 비슷한 형식으로 줄을 가지고 있습니다.그러나 내가 한 줄의 표를 굴리기로 결정한 것은 개발자 포럼의 보편적인 견해가 EAV가 아닌 SRT에 더 치우친 것 같기 때문이다.나는 기회를 잡아 시뮬레이션 벨트를 펼치고 찬성/반대 명세서를 대충 적어 놓았다.이 점을 아래에 공유하여 보기 드문 '편집 가능한 프로그램 범위 설정' 난제에 대한 응답을 선택하거나 계획할 수 있도록 도와 드리겠습니다.
단일 열 Table Pro's
app_settings
테이블에 추가하는 것은 매우 간단합니다. 정렬을 할 수 있습니다.또한 실체 속성 값표를 사용한다면 이 정도는 간단하지 않습니다.created_at
및 updated_at
열을 추가하면 구성 옵션을 추가/업데이트할 때 추적하기 쉽습니다.구성 옵션
문자열 값
int 값
암호화api 키
asD2-f21Fa-126d-a
무효이었어
갱신 초
무효이었어
20
Reference
이 문제에 관하여(단일 행의 응용 프로그램 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wildgeodude/application-config-in-a-single-row-table-4lbj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)