이 프로젝트는 다음을 목표로합니다.
사양 요약 :
다음은이 API-> Android -Base의 데이터를 소비하는 Client Client Mobile 앱입니다.
Ruby 버전 2.3.0을 설치하고 Ruby Environment Manager (자세한 정보)로 설정하십시오.
Postgres를 설치하고 전경에서 PostgreSQL 서버를 시작하십시오 (자세한 내용은 여기).
저장소를 복제하고 안으로 들어갑니다.
git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name
cd your-project-name
./bin/rename_project YourProjectName
./bin/remove_notes
./bin/create_psql_user yourprojectname
./bin/setup
rspec
./bin/reset_git https://github.com/yourusername/your-project-name.git
그게 다야, 이제 자신의 앱 개발을 시작할 수 있습니다!
(LocalHost에서 개발하는 동안 사용자 확인을 받고 비밀번호 이메일을 복구하려면 MailCatcher를 시작하십시오).
gem install mailcatcher
mailcatcher
응용 프로그램 자체는 거의 비어 있으므로 일부 기본 모듈을 제공하고 일부 패턴으로 구조를 구현하고 샘플 코드를 제공하는 것만 목표로합니다. 사양은 다음과 같습니다.
이 앱에는 Rails-API 관련 모듈 만 포함되어 있으므로 일반 앱보다 얇지 만 필요한 경우 수동으로 추가 할 수있는 일부 기능이 부족합니다. API의 아키텍처는 레일과 HTTP의 편안한 모범 사례를 따릅니다.
엔드 포인트 경로와 코드 구조는 새로운 API 버전을 추가 할 준비가되었습니다. 버전은 첫 번째 버전을 사용하려면 application/vnd.railsapibase.v1 과 같은 값으로 headers['Accept'] 통해 선택됩니다.
앱 샘플 코드를 제공하기 위해 title 과 content 로 구성된 notes (필기 종이 노트 표현과 같은)를 관리하기위한 코드가 개발되었습니다. 따라서 앱에는 노트 경로, 컨트롤러, 모델 및 RSPEC가 해당 메모로 작업 할 수 있습니다.
독특한 목적은 새 코드를 추가하는 방법에 대한 안내서이므로 bin/remove_notes 쉘 스크립트에 의해 삭제됩니다.
API의 글로벌 컨트롤러 기능을 구조화하기 위해 ActiveSupport :: 관심으로 다른 모듈이 구현되었으며 가짜 컨트롤러를 사용하여 테스트되었습니다. 이 모듈은 나머지 컨트롤러의 아버지 컨트롤러 인 Apicontroller에 포함되어 있습니다 (이 게시물을 확인하십시오). 현재 인증, 오류 처리, 국제화 및 버전 만료의 4 가지 모듈이 있습니다 (다른 기타 확인). 코드 기후는 이것과 나머지 모든 코드가 모범 사례를 따르는 것을 확인하는 데 사용되는 서비스입니다 (프로젝트를 사용하려면 활성화해야합니다).
Codeclimate는 CLI와 함께 로컬로 실행할 수 있습니다.
거의 모든 API에는 사용자, 세션 및 인증이 필요 하므로이 앱의 가장 중요한 기능입니다. 선택한 솔루션은 세션 및 사용자를 처리하기 위해 사용자 정의 구현과 함께 has_secure_password 및 has_secure_token 사용합니다.
사용자가 로그인하면 토큰이 반환되고 나중에 인증을 요청할 때 headers['Authorization'] 로 설정해야합니다. 그것에 대한 자세한 정보 (이 게시물)
버전을 여전히 사용할 수 있는지 확인하려면 각 메소드가 호출하기 전에 필터링하는 모듈이 있습니다. 버전이 만료되고 클라이언트의 만료 날짜를 확인하기위한 엔드 포인트가 있으면 오류가 반환됩니다 (예 : 사용자에게 앱을 업데이트하도록 경고). 만료 날짜를 콘크리트 버전으로 설정하려면 ENV['LAST_EXPIRED_VERSION'] 에 대해 문자열에 형식으로 형식으로 정수를 설정하십시오. 지정된 모든 버전은 지정된 것과 동일합니다. 요청하면 업그레이드 오류 메시지를 보냅니다. 일부 버전으로 경고를 설정하는 시스템은 ENV['LAST_WARNED_VERSION'] 사용하여 경고하려는 더 높은 버전을 설정합니다. 그것에 대한 자세한 정보 (이 게시물)
앱은 영어 (기본 언어) 및 스페인어 (번역 예제)로 번역됩니다. request.env['HTTP_ACCEPT_LANGUAGE'] 에서 로케일을 가져 오는 간단한 모듈이 있습니다 ( Accept-Languange 헤더를 통해 설정할 수 있음)는 시스템으로 설정하여 적절한 변환을 자동으로 반환합니다. 그것에 대한 자세한 정보 (이 게시물)
필요한 모든 번역이 특정 언어에 대해 설정되어 있는지 테스트하려면 spec_helper.rb 파일에 다음 줄을 타협하고 대상 언어를 배치하고 rspec 실행하십시오.
I18n.default_locale = :es
API 클라이언트에 대한 약간의 제어를 추가하기 위해 비밀 API 키 검증 시스템이있어 사용자를 생성하는 유효한 클라이언트인지 확인할 수 있습니다. 이 서비스를 활성화하려면 ENV['SECRET_API_KEY'] 에 값을 설정하십시오. 새 사용자 메소드를 호출 할 때 비밀 API 키는 headers['Authorization'] 로 보내야합니다.
이 프로젝트는 TDD 프로세스를 사용하여 개발되었으며 모든 코드는 Betterspecs.org에서 정의 된 모범 사례 지침에 따라 RSPEC을 사용하여 테스트됩니다. 그렇게 유지하는 것이 중요합니다. 코드 기후는 테스트가 모든 코드 케이스를 포괄하는지 확인합니다. Travis-Ci는 푸시가 만들 때마다 테스트를 실행하는 지속적인 통합 시스템입니다. 이 서비스를 사용하려면 웹 사이트에서이를 활성화해야합니다. 그렇지 않은 경우 .travis.yml 파일을 삭제하십시오.
새 프로젝트를 시작하도록 파일을 준비하기 위해 코드를 수동으로 수정하는 부담을 피하기 위해 일부 스크립트가 구현되었습니다. bin/ 폴더 내부에서 찾을 수 있습니다 (사용 후 자체 파괴).
그들은 Shellcheck에 의해 분석되었습니다.
배포 문제를 피하기 위해 Postgres 데이터베이스는 처음부터 테스트 및 개발을위한 데이터베이스 시스템으로 설정되었습니다. Heroku가 기본 DB 시스템으로 사용한다는 사실도 고려되었습니다.
이 프로젝트는 Rails 5.1.4 (API 모듈)와 Ruby 2.3.0을 사용하며 Gemnasium 서비스를 사용하여 최신 상태로 유지하려고합니다. 사용하려면 저장소 에이 서비스를 활성화해야합니다.
코드 우아함과 가독성을 높이기 위해이 루비 스타일 가이드는 참조로 사용되었습니다. Rubocop Gem은 해당 스타일 가이드를 기반으로 한 Ruby 정적 코드 분석입니다. 그냥 실행 :
gem install rubocop
rubocop
.rubocop.yml 파일은 구성을 정의합니다 (사용하지 않으면 제거).
응답은 ActiveModelserializers gem을 사용하여 형식화됩니다. 시리얼 라이저는 출력 JSON을 포맷 할 책임이 있으며 모델 및 컨트롤러 에서이 레이어를 분리하는 좋은 방법입니다. 또한 각 API 버전의 출력을 직접 방해하기 때문에 컨트롤러 (예 : Api::V1::Serializer )와 같은 버전으로 제공됩니다. 이것은 구식 계약을 유지하는 데 도움이 될 것입니다.
다음은이 API-> Android -Base의 데이터를 소비하는 Client Client Mobile 앱입니다.
나는 Rails 경험이 풍부한 개발자가 아니므로 모든 제안과 기부금이 환영받는 것 이상입니다!
rspec
rubocop
불행히도 아직 기여자는 없습니다.
http://jordifierro.com