>  Q&A  >  본문

파일 및 관련 데이터를 JSON 형식으로 RESTful WebService에 게시합니다.

<p>제가 개발 중인 애플리케이션에서는 클라이언트가 JSON 형식으로 데이터를 보내길 원하므로 RESTful API를 개발 중입니다. 애플리케이션의 일부에서는 클라이언트가 이미지에 대한 정보와 함께 파일(일반적으로 이미지)을 업로드해야 합니다. </p> <p>단일 요청으로 이 작업을 수행하는 방법을 추적하는 데 문제가 있습니다. Base64로 파일 데이터를 JSON 문자열로 인코딩할 수 있나요? 서버에 대해 두 개의 POST 요청을 수행해야 합니까? 이 문제를 처리하기 위해 JSON을 사용하면 안 되나요? </p> <p>또한 우리는 백엔드에서 Grails를 사용하며 해당 정보가 다른 경우 기본 모바일 클라이언트(iPhone, Android 등)에서 이러한 서비스에 액세스할 수 있습니다. </p>
P粉056618053P粉056618053396일 전514

모든 응답(2)나는 대답할 것이다

  • P粉994092873

    P粉9940928732023-08-21 12:54:55

    multipart/form-data 콘텐츠 유형을 사용하여 한 번의 요청으로 파일과 데이터를 보낼 수 있습니다.

    출처: http://www.faqs.org/rfcs/rfc2388.html:

    각 경계 사이의 각 섹션에 파일 정보나 필드 정보를 포함할 수 있습니다. 사용자가 데이터와 양식을 제출해야 하는 RESTful 서비스를 성공적으로 구현했으며 multipart/form-data가 완벽하게 작동합니다. 서비스는 Java/Spring을 사용하여 구축되었으며 클라이언트는 C#을 사용하므로 안타깝게도 서비스 설정 방법을 알려줄 Grails 예제가 없습니다. 이 경우 각 "form-data" 섹션에서 매개변수 이름과 해당 값을 지정할 수 있는 위치를 제공하므로 JSON을 사용할 필요가 없습니다.

    multipart/form-data 사용의 장점은 HTTP에서 정의한 헤더를 사용하므로 기존 HTTP 도구를 사용하여 서비스를 생성한다는 REST 철학을 따른다는 것입니다.

    회신하다
    0
  • P粉145543872

    P粉1455438722023-08-21 11:24:16

    여기서 비슷한 질문을 했습니다:

    REST 웹 서비스를 사용하여 메타데이터가 포함된 파일을 업로드하는 방법은 무엇입니까?

    기본적으로 세 가지 옵션이 있습니다:

    1. Base64로 파일을 인코딩하지만 데이터 크기가 약 33% 증가하고 서버와 클라이언트에 인코딩/디코딩 처리 오버헤드가 추가됩니다.
    2. 먼저 파일을 multipart/form-data로 보내고 ID를 클라이언트에 반환합니다. 그런 다음 클라이언트는 해당 ID를 사용하여 메타데이터를 보내고 서버는 파일과 메타데이터를 다시 연결합니다.
    3. 메타데이터를 먼저 보내고 ID를 클라이언트에 반환합니다. 그런 다음 클라이언트는 해당 ID를 사용하여 파일을 보내고 서버는 파일과 메타데이터를 다시 연결합니다.

    회신하다
    0
  • 취소회신하다