appie-rails로 멀티파트/form-data 처리

5246 단어 Rails
4년 정도 된 5만엔짜리 교차 오토바이를 타는 대수리에는 주체비 정도의 비용이 들 것 같아 스트림 팩 팀의 민수라고 하는데 도로 자전거로 바꿀까 고민 중이다.

하고 싶은 일


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-railsgem
https://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니까, 문서를 읽는 쪽이 어떻게 되는지.

좋은 웹페이지 즐겨찾기