appie-rails로 멀티파트/form-data 처리
5246 단어 Rails
하고 싶은 일
rails API에 다음 form을 보낼 때
appie-rails의custom validator를 설정하여form의 file 형식을 매개 변수로 처리할 수 있도록 합니다.
<form method="post" action="xxxx" enctype="multipart/form-data">
<p>画像ファイル<input type="file" name="imagefile" accept="image/*"></p>
<p><input type="submit" value="送信する"></p>
</form>
apipie-railsgemhttps://github.com/Apipie/apipie-rails
appie-rails는 rails용 REST API의 문서 생성 도구입니다.
문서에 각 동작의 오류 코드와 매개 변수를 표시할 수 있습니다.
발리 데이터
코드가 기재되면 문서에 반영됩니다
appie-rails는 요청 파라미터를 검사하고 문서에서 지정한 이외의 형식을 지정할 때 검증 오류를 되돌려주는 기능을 가지고 있습니다.
가시 데이터는 지정한 유형, 배열, 산열 등 appie에서 쉽게 사용할 수 있는 데이터가 준비되어 있지만 form에 대응할 file 형식의 가시 데이터는 없습니다.
발리 데이터 사용자 정의
단, appie는 독자적으로 가시 데이터를 설정할 수 있기 때문에form의 file 형식의 사용자 정의 가시 데이터를 실시합니다.
https://github.com/Apipie/apipie-rails#adding-custom-validator
맞춤형 발리 데이터는 initializars에서 설정할 수 있습니다
config/initializars/apipie_validators.rb를 만들고 다음class를 설정합니다.
apipie_validators.rb
class UploadedFileValidator < Apipie::Validator::BaseValidator
def validate(value)
value.is_a?(ActionDispatch::Http::UploadedFile)
end
def self.build(param_description, argument, options, block)
self.new param_description if argument == :uploadedfile
end
def description
'Must be a valid file'
end
end
그리고 appie 기술 파라미터로 아까 사용자 정의 발리 데이터로 설정한: uploadedfile를 지정하면 발리 검사로 Action Dispatch: Http::UploadedFile 레벨을 검사합니다. param :imagefile, :uploadedfile, :required => true ,:desc => "Need to set a new user image file in form-data"
이렇게 하면 appie-rails로form의 파일 형식을 처리할 수 있습니다.덤
사용자 정의 발리 데이터를 만들지 않더라도 Action Dispatch:Http:UploadedFile 클래스를 매개변수에 직접 지정할 수 있습니다.
param :imagefile, ActionDispatch::Http::UploadedFile, :required => true ,:desc => "Need to set a new user image file in form-data"
설명서는 다음과 같습니다.Must be a ActionDispatch::Http::UploadedFile
니까, 문서를 읽는 쪽이 어떻게 되는지.
Reference
이 문제에 관하여(appie-rails로 멀티파트/form-data 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minsu/items/08456f1fa23f47fe27d9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)